From e392a2c25536bb51b10405bee971fcf327c631da Mon Sep 17 00:00:00 2001 From: codex-server Date: Sat, 2 May 2026 07:28:46 -0300 Subject: [PATCH] auto-sync: tudo-para-ia-mais-humana 2026-05-02 07:28:45 --- controle-semantico.sqlite | Bin 4952064 -> 4956160 bytes ...orkspace-hygiene-central-write-status.json | 2 +- dados/workspace-hygiene-policy.json | 4058 ++ dados/workspace-hygiene-report.json | 14 +- ecossistema/WORKSPACE-HYGIENE-POLICY.md | 104 + ecossistema/WORKSPACE-HYGIENE-REPORT.md | 12 +- matrizes/workspace-hygiene-policy-cases.csv | 1537 + matrizes/workspace-hygiene-targets.csv | 2 +- src/mais_humana/cli.py | 20 + .../generated_workspace_hygiene_policy.py | 38715 ++++++++++++++++ src/mais_humana/workspace_hygiene.py | 53 +- src/mais_humana/workspace_hygiene_policy.py | 470 + tests/test_workspace_hygiene_policy.py | 64 + tools/generate_workspace_hygiene_policy.py | 120 + 14 files changed, 45153 insertions(+), 18 deletions(-) create mode 100644 dados/workspace-hygiene-policy.json create mode 100644 ecossistema/WORKSPACE-HYGIENE-POLICY.md create mode 100644 matrizes/workspace-hygiene-policy-cases.csv create mode 100644 src/mais_humana/generated_workspace_hygiene_policy.py create mode 100644 src/mais_humana/workspace_hygiene_policy.py create mode 100644 tests/test_workspace_hygiene_policy.py create mode 100644 tools/generate_workspace_hygiene_policy.py diff --git a/controle-semantico.sqlite b/controle-semantico.sqlite index b21ae1effaf018669bb78322fef9b002122f0a16..f0da6819d741967f89faf1fe0d25db560bb08539 100644 GIT binary patch delta 1928 zcmdti+fy4=90%~-&4pYx*(3;6Ze7e$N((VS%W`QOAeBo)A#KG{2bJw+u`7_oBm`RR zK+-9Q%oIA#c*ZyT;;4hIl-8Z}=Sr6w0e8Na&B2WZ#oh>YJ0>w)?801XTnzz8NVLjhR83O29< z3l4As2QF}f2MXaCD1u_x0nfs7Py(e;2IWuzJAsEvcwSo%c-#G!GA>T#7D?E+w`r|? z_6EJSywOZ+zNEL4HRH*xtdpc?yvyto`Wa@qGH2Maq|f&f*p3#wr^)W9Ct3$;)OK6nBAP!A2z2>W2a7QWQ9dT+q+ zDOYL9VWqYylq3t{KEi-F+>HW*$DsuNNv4Pw@E_fXA*tja6^}U&lMQJCwpAb9A z=L;dXb~`S9&zSJ`*8=~1PghC|=6W_0|2v|G3lH@522c4WBD8DBn5ictGYEv65Ii1z z>^fOWDoLN5Ow*i3Pl_%^>z@*TE6|2##82XuVkS!&L?)|Qw!}1J$}}3Y>fdL4*(_x$ zjM*oxW521vm{k~ZrLuWte&K-#&Cmj^&;|$KARK}Kv_l7ULJ$tai_it#&;z~N!h<7k zFS16)OtD{DhfOCL^IB%(7uqv-H0$K3Ol9m~(O{-KSvg-vR*wtqZI8tmMxrTImiQwl z2KxDk!Y7oJ5|yPGukhpQL|i#1%Ze&#&ujM;}eYJdSDyk%SNlvM;C}vgCY6L4#^Ye}> z@)>DDiKb#c;{K_rk-Xa@R*;Qy(L~z%1$*d!oPpGb1fEQc32w5|FL`m*C=3X}U zSv_;7vMv;>=G9QSUaS_fnfC6>Z(EY+5^4(0sBfrBR4>6_a~yj`D9tbWDXc*W895}_ z$joBMMwYq+b~}J8CE}iZx+@gayMa~FTcj;)F9n&1DN{;ymYC5cbP(|QO>$oY_9 nFM4tiTdxUKxgyvf3xib73nJM{p(G$ delta 683 zcmXBRPe_w-7zgn8efPe5_vd~0ICC^3C`Rx?f@w&H7W=~> z%55QQL}R1ycc?=`LO~iL^x~-wJ9OyaExHt*JXDZje@@a@I(#k<-^2HLp6t67F8geS zE4u}SVfgh*lg28mlT#Wi->Yhcs>T8bCg4E;Gl*aTE7-se63E~H1!}+vwXhHBU_ZFv z033vRI0SC+z+q^BMrZ;r95Jez+UvKtl{B+gl1gzkxR%@a#u*(6wO^v~PM?{k=hU)9 z5in&Hk0UBmqc*GFk!ksN&|<|jlk4X5v(%X;GxYmUGE#_^RPaGFv_LByg*G?_$KeFD zLkDz%A5KCSbVC468PQU3b#q*FGAff`tY57ymIZNJoZu?TYtGN!WxqInIUYO0@|OHm z9^Eg5B)T+1`IJnE{iT)&Xr(?di1MPH?K`++ON+h^<>J>=g5mVUuXKr z7}5`t=GMv^S6Fkdi_cGUbkQ4nRVeNd2*GLSfirLx!f*~W=!HJ$hx0H1gAjosxB$aO cacAWA1Di>RG142WF2wNVVZn&akG{111I(uZt^fc4 diff --git a/dados/workspace-hygiene-central-write-status.json b/dados/workspace-hygiene-central-write-status.json index 5065e42..7bc0fcc 100644 --- a/dados/workspace-hygiene-central-write-status.json +++ b/dados/workspace-hygiene-central-write-status.json @@ -6,6 +6,6 @@ "path": "G:\\_codex-git\\nucleo-gestao-operacional\\central-de-ordem-de-servico\\projects\\15_repo_tudo-para-ia-mais-humana-platform\\reports\\EXECUTADO__workspace-hygiene.md" } ], - "generatedAt": "2026-05-02T09:27:04+00:00", + "generatedAt": "2026-05-02T10:25:29+00:00", "ok": false } \ No newline at end of file diff --git a/dados/workspace-hygiene-policy.json b/dados/workspace-hygiene-policy.json new file mode 100644 index 0000000..d3c66f2 --- /dev/null +++ b/dados/workspace-hygiene-policy.json @@ -0,0 +1,4058 @@ +{ + "cases": [ + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-5d2027200080cdc46bb65f26", + "direct_delete_allowed": false, + "environment": "windows_primary", + "error_kind": "none", + "execution_mode": "inspect", + "mcp_transit_required": true, + "next_action": "registrar footprint e executar apply apenas no fechamento", + "reason": "modo inspecao nunca apaga artefato", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "no_error", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "record_only" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-228473216bb503bc783a215c", + "direct_delete_allowed": false, + "environment": "windows_primary", + "error_kind": "not_found", + "execution_mode": "inspect", + "mcp_transit_required": true, + "next_action": "registrar footprint e executar apply apenas no fechamento", + "reason": "modo inspecao nunca apaga artefato", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "record_only" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-cb761d2f71e849f1c149b488", + "direct_delete_allowed": false, + "environment": "windows_primary", + "error_kind": "permission_denied", + "execution_mode": "inspect", + "mcp_transit_required": true, + "next_action": "registrar footprint e executar apply apenas no fechamento", + "reason": "modo inspecao nunca apaga artefato", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "record_only" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-4582db63a0bb51ede7108d29", + "direct_delete_allowed": false, + "environment": "windows_primary", + "error_kind": "directory_not_empty", + "execution_mode": "inspect", + "mcp_transit_required": true, + "next_action": "registrar footprint e executar apply apenas no fechamento", + "reason": "modo inspecao nunca apaga artefato", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "record_only" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-fb0ee31aef29fc1e827f9a6a", + "direct_delete_allowed": false, + "environment": "windows_primary", + "error_kind": "file_locked", + "execution_mode": "inspect", + "mcp_transit_required": true, + "next_action": "registrar footprint e executar apply apenas no fechamento", + "reason": "modo inspecao nunca apaga artefato", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "record_only" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-4aa82262a3f3e58f587663a6", + "direct_delete_allowed": false, + "environment": "windows_primary", + "error_kind": "unsafe_path", + "execution_mode": "inspect", + "mcp_transit_required": true, + "next_action": "bloquear antes de qualquer escrita e registrar evidencia", + "reason": "path calculado sai do project_root ou cruza boundary de volume", + "relative_path": ".test-tmp", + "remediation_actions": [ + "block_before_write", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "block_unsafe" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-4c516245ec963722a3dc7ee8", + "direct_delete_allowed": false, + "environment": "windows_primary", + "error_kind": "central_write_denied", + "execution_mode": "inspect", + "mcp_transit_required": true, + "next_action": "registrar footprint e executar apply apenas no fechamento", + "reason": "modo inspecao nunca apaga artefato", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "record_only" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-dabc8c8df47232d77d5e1541", + "direct_delete_allowed": false, + "environment": "windows_primary", + "error_kind": "unknown", + "execution_mode": "inspect", + "mcp_transit_required": true, + "next_action": "registrar footprint e executar apply apenas no fechamento", + "reason": "modo inspecao nunca apaga artefato", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "record_only" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-a0a5fba1d3767fe3c2d63f33", + "direct_delete_allowed": true, + "environment": "windows_primary", + "error_kind": "none", + "execution_mode": "apply", + "mcp_transit_required": true, + "next_action": "manter ausente e registrar status", + "reason": "artefato ausente ou removivel por limpeza local aprovada", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "no_error", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "pass" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-3e31009425a0230ecef0ccd8", + "direct_delete_allowed": true, + "environment": "windows_primary", + "error_kind": "not_found", + "execution_mode": "apply", + "mcp_transit_required": true, + "next_action": "manter ausente e registrar status", + "reason": "artefato ausente ou removivel por limpeza local aprovada", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "pass" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-c23bb01b6d9294f0ebfdd9fc", + "direct_delete_allowed": true, + "environment": "windows_primary", + "error_kind": "permission_denied", + "execution_mode": "apply", + "mcp_transit_required": true, + "next_action": "registrar caminho retido e solicitar owner autorizado", + "reason": "ACL ou processo externo reteve caminho depois de remover filhos acessiveis", + "relative_path": ".test-tmp", + "remediation_actions": [ + "best_effort_delete", + "continue_after_child_error", + "escalate_owner", + "record_acl_exception" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "owner_action_required" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-7cce0df320947bdf44a99a25", + "direct_delete_allowed": true, + "environment": "windows_primary", + "error_kind": "directory_not_empty", + "execution_mode": "apply", + "mcp_transit_required": true, + "next_action": "reduzir conteudo acessivel e registrar filhos retidos", + "reason": "diretorio ainda contem filho retido por erro anterior", + "relative_path": ".test-tmp", + "remediation_actions": [ + "best_effort_delete", + "continue_after_child_error", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "retain_with_evidence" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-7d3c3344e63eb8e867ee5bfe", + "direct_delete_allowed": true, + "environment": "windows_primary", + "error_kind": "file_locked", + "execution_mode": "apply", + "mcp_transit_required": true, + "next_action": "registrar caminho retido e solicitar owner autorizado", + "reason": "ACL ou processo externo reteve caminho depois de remover filhos acessiveis", + "relative_path": ".test-tmp", + "remediation_actions": [ + "best_effort_delete", + "continue_after_child_error", + "escalate_owner", + "record_acl_exception" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "owner_action_required" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-f3675147f70d13633cb09512", + "direct_delete_allowed": false, + "environment": "windows_primary", + "error_kind": "unsafe_path", + "execution_mode": "apply", + "mcp_transit_required": true, + "next_action": "bloquear antes de qualquer escrita e registrar evidencia", + "reason": "path calculado sai do project_root ou cruza boundary de volume", + "relative_path": ".test-tmp", + "remediation_actions": [ + "block_before_write", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "block_unsafe" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-ac1bd6962d0b5a4526fdd10a", + "direct_delete_allowed": false, + "environment": "windows_primary", + "error_kind": "central_write_denied", + "execution_mode": "apply", + "mcp_transit_required": true, + "next_action": "manter fallback no projeto real e registrar pendencia central", + "reason": "pasta central recusou escrita, mas projeto real deve registrar status", + "relative_path": ".test-tmp", + "remediation_actions": [ + "write_status_artifact", + "update_semantic_sql" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "retain_with_evidence" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-5aef47da6b565cd6dcabe957", + "direct_delete_allowed": false, + "environment": "windows_primary", + "error_kind": "unknown", + "execution_mode": "apply", + "mcp_transit_required": true, + "next_action": "registrar erro bruto redigido e reavaliar proxima rodada", + "reason": "erro desconhecido deve ser evidenciado antes de nova tentativa", + "relative_path": ".test-tmp", + "remediation_actions": [ + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "retain_with_evidence" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-f9d8c5f22f456ec593c6f211", + "direct_delete_allowed": true, + "environment": "windows_primary", + "error_kind": "none", + "execution_mode": "closeout", + "mcp_transit_required": true, + "next_action": "manter ausente e registrar status", + "reason": "artefato ausente ou removivel por limpeza local aprovada", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "no_error", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "pass" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-66c57ea342cf242a5393be0d", + "direct_delete_allowed": true, + "environment": "windows_primary", + "error_kind": "not_found", + "execution_mode": "closeout", + "mcp_transit_required": true, + "next_action": "manter ausente e registrar status", + "reason": "artefato ausente ou removivel por limpeza local aprovada", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "pass" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-32e3856c59c82f31b106ac99", + "direct_delete_allowed": true, + "environment": "windows_primary", + "error_kind": "permission_denied", + "execution_mode": "closeout", + "mcp_transit_required": true, + "next_action": "registrar caminho retido e solicitar owner autorizado", + "reason": "ACL ou processo externo reteve caminho depois de remover filhos acessiveis", + "relative_path": ".test-tmp", + "remediation_actions": [ + "best_effort_delete", + "continue_after_child_error", + "escalate_owner", + "record_acl_exception" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "owner_action_required" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-b1638bc1c123df15e80227d2", + "direct_delete_allowed": true, + "environment": "windows_primary", + "error_kind": "directory_not_empty", + "execution_mode": "closeout", + "mcp_transit_required": true, + "next_action": "reduzir conteudo acessivel e registrar filhos retidos", + "reason": "diretorio ainda contem filho retido por erro anterior", + "relative_path": ".test-tmp", + "remediation_actions": [ + "best_effort_delete", + "continue_after_child_error", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "retain_with_evidence" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-45895efc199646bc41cdf9e0", + "direct_delete_allowed": true, + "environment": "windows_primary", + "error_kind": "file_locked", + "execution_mode": "closeout", + "mcp_transit_required": true, + "next_action": "registrar caminho retido e solicitar owner autorizado", + "reason": "ACL ou processo externo reteve caminho depois de remover filhos acessiveis", + "relative_path": ".test-tmp", + "remediation_actions": [ + "best_effort_delete", + "continue_after_child_error", + "escalate_owner", + "record_acl_exception" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "owner_action_required" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-7a53c08cceab0e41c3359ed8", + "direct_delete_allowed": false, + "environment": "windows_primary", + "error_kind": "unsafe_path", + "execution_mode": "closeout", + "mcp_transit_required": true, + "next_action": "bloquear antes de qualquer escrita e registrar evidencia", + "reason": "path calculado sai do project_root ou cruza boundary de volume", + "relative_path": ".test-tmp", + "remediation_actions": [ + "block_before_write", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "block_unsafe" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-46699cee9bdfd53b87e78c36", + "direct_delete_allowed": false, + "environment": "windows_primary", + "error_kind": "central_write_denied", + "execution_mode": "closeout", + "mcp_transit_required": true, + "next_action": "manter fallback no projeto real e registrar pendencia central", + "reason": "pasta central recusou escrita, mas projeto real deve registrar status", + "relative_path": ".test-tmp", + "remediation_actions": [ + "write_status_artifact", + "update_semantic_sql" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "retain_with_evidence" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-36d8f0af32e85b3e0b279e05", + "direct_delete_allowed": false, + "environment": "windows_primary", + "error_kind": "unknown", + "execution_mode": "closeout", + "mcp_transit_required": true, + "next_action": "registrar erro bruto redigido e reavaliar proxima rodada", + "reason": "erro desconhecido deve ser evidenciado antes de nova tentativa", + "relative_path": ".test-tmp", + "remediation_actions": [ + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "retain_with_evidence" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-5a1b22bdcb58bbcc237f14ac", + "direct_delete_allowed": true, + "environment": "windows_primary", + "error_kind": "none", + "execution_mode": "central_record", + "mcp_transit_required": true, + "next_action": "manter ausente e registrar status", + "reason": "artefato ausente ou removivel por limpeza local aprovada", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "no_error", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "pass" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-0a88ddf3c1c8b14321813c32", + "direct_delete_allowed": true, + "environment": "windows_primary", + "error_kind": "not_found", + "execution_mode": "central_record", + "mcp_transit_required": true, + "next_action": "manter ausente e registrar status", + "reason": "artefato ausente ou removivel por limpeza local aprovada", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "pass" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-606b442e56149662192ac879", + "direct_delete_allowed": true, + "environment": "windows_primary", + "error_kind": "permission_denied", + "execution_mode": "central_record", + "mcp_transit_required": true, + "next_action": "registrar caminho retido e solicitar owner autorizado", + "reason": "ACL ou processo externo reteve caminho depois de remover filhos acessiveis", + "relative_path": ".test-tmp", + "remediation_actions": [ + "best_effort_delete", + "continue_after_child_error", + "escalate_owner", + "record_acl_exception" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "owner_action_required" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-89a9c0752f0b51866217bf84", + "direct_delete_allowed": true, + "environment": "windows_primary", + "error_kind": "directory_not_empty", + "execution_mode": "central_record", + "mcp_transit_required": true, + "next_action": "reduzir conteudo acessivel e registrar filhos retidos", + "reason": "diretorio ainda contem filho retido por erro anterior", + "relative_path": ".test-tmp", + "remediation_actions": [ + "best_effort_delete", + "continue_after_child_error", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "retain_with_evidence" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-1f3ffab2223eeaecbbdbed62", + "direct_delete_allowed": true, + "environment": "windows_primary", + "error_kind": "file_locked", + "execution_mode": "central_record", + "mcp_transit_required": true, + "next_action": "registrar caminho retido e solicitar owner autorizado", + "reason": "ACL ou processo externo reteve caminho depois de remover filhos acessiveis", + "relative_path": ".test-tmp", + "remediation_actions": [ + "best_effort_delete", + "continue_after_child_error", + "escalate_owner", + "record_acl_exception" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "owner_action_required" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-1c441a1661159cb6f7187ce1", + "direct_delete_allowed": false, + "environment": "windows_primary", + "error_kind": "unsafe_path", + "execution_mode": "central_record", + "mcp_transit_required": true, + "next_action": "bloquear antes de qualquer escrita e registrar evidencia", + "reason": "path calculado sai do project_root ou cruza boundary de volume", + "relative_path": ".test-tmp", + "remediation_actions": [ + "block_before_write", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "block_unsafe" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-aad100963e7d8379a24f2b57", + "direct_delete_allowed": false, + "environment": "windows_primary", + "error_kind": "central_write_denied", + "execution_mode": "central_record", + "mcp_transit_required": true, + "next_action": "manter fallback no projeto real e registrar pendencia central", + "reason": "pasta central recusou escrita, mas projeto real deve registrar status", + "relative_path": ".test-tmp", + "remediation_actions": [ + "write_status_artifact", + "update_semantic_sql" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "retain_with_evidence" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-e3eb826734091137b31cc07b", + "direct_delete_allowed": false, + "environment": "windows_primary", + "error_kind": "unknown", + "execution_mode": "central_record", + "mcp_transit_required": true, + "next_action": "registrar erro bruto redigido e reavaliar proxima rodada", + "reason": "erro desconhecido deve ser evidenciado antes de nova tentativa", + "relative_path": ".test-tmp", + "remediation_actions": [ + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "retain_with_evidence" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-f8242138d8161a66bdd2d7cb", + "direct_delete_allowed": false, + "environment": "windows_secondary", + "error_kind": "none", + "execution_mode": "inspect", + "mcp_transit_required": true, + "next_action": "registrar footprint e executar apply apenas no fechamento", + "reason": "modo inspecao nunca apaga artefato", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "no_error", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "record_only" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-8f0f0dfa2a0a0cd0be6b658e", + "direct_delete_allowed": false, + "environment": "windows_secondary", + "error_kind": "not_found", + "execution_mode": "inspect", + "mcp_transit_required": true, + "next_action": "registrar footprint e executar apply apenas no fechamento", + "reason": "modo inspecao nunca apaga artefato", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "record_only" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-f9c3fc1327e3c1391868b696", + "direct_delete_allowed": false, + "environment": "windows_secondary", + "error_kind": "permission_denied", + "execution_mode": "inspect", + "mcp_transit_required": true, + "next_action": "registrar footprint e executar apply apenas no fechamento", + "reason": "modo inspecao nunca apaga artefato", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "record_only" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-0baf6ba10316a0cfd87f80ad", + "direct_delete_allowed": false, + "environment": "windows_secondary", + "error_kind": "directory_not_empty", + "execution_mode": "inspect", + "mcp_transit_required": true, + "next_action": "registrar footprint e executar apply apenas no fechamento", + "reason": "modo inspecao nunca apaga artefato", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "record_only" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-806a326c17d88486df9359d2", + "direct_delete_allowed": false, + "environment": "windows_secondary", + "error_kind": "file_locked", + "execution_mode": "inspect", + "mcp_transit_required": true, + "next_action": "registrar footprint e executar apply apenas no fechamento", + "reason": "modo inspecao nunca apaga artefato", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "record_only" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-c992717a0c0a8d1f38b29b08", + "direct_delete_allowed": false, + "environment": "windows_secondary", + "error_kind": "unsafe_path", + "execution_mode": "inspect", + "mcp_transit_required": true, + "next_action": "bloquear antes de qualquer escrita e registrar evidencia", + "reason": "path calculado sai do project_root ou cruza boundary de volume", + "relative_path": ".test-tmp", + "remediation_actions": [ + "block_before_write", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "block_unsafe" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-53a6aee1dc74bbd57220d67e", + "direct_delete_allowed": false, + "environment": "windows_secondary", + "error_kind": "central_write_denied", + "execution_mode": "inspect", + "mcp_transit_required": true, + "next_action": "registrar footprint e executar apply apenas no fechamento", + "reason": "modo inspecao nunca apaga artefato", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "record_only" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-9c152223f8242817a79971bc", + "direct_delete_allowed": false, + "environment": "windows_secondary", + "error_kind": "unknown", + "execution_mode": "inspect", + "mcp_transit_required": true, + "next_action": "registrar footprint e executar apply apenas no fechamento", + "reason": "modo inspecao nunca apaga artefato", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "record_only" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-87c3f9c9b4e74cbc737cbda2", + "direct_delete_allowed": true, + "environment": "windows_secondary", + "error_kind": "none", + "execution_mode": "apply", + "mcp_transit_required": true, + "next_action": "manter ausente e registrar status", + "reason": "artefato ausente ou removivel por limpeza local aprovada", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "no_error", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "pass" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-206da35bc71c92f44cfee34f", + "direct_delete_allowed": true, + "environment": "windows_secondary", + "error_kind": "not_found", + "execution_mode": "apply", + "mcp_transit_required": true, + "next_action": "manter ausente e registrar status", + "reason": "artefato ausente ou removivel por limpeza local aprovada", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "pass" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-51957806f136b8a3e39c1b58", + "direct_delete_allowed": true, + "environment": "windows_secondary", + "error_kind": "permission_denied", + "execution_mode": "apply", + "mcp_transit_required": true, + "next_action": "registrar caminho retido e solicitar owner autorizado", + "reason": "ACL ou processo externo reteve caminho depois de remover filhos acessiveis", + "relative_path": ".test-tmp", + "remediation_actions": [ + "best_effort_delete", + "continue_after_child_error", + "escalate_owner", + "record_acl_exception" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "owner_action_required" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-0ff808e4688a92886ff70527", + "direct_delete_allowed": true, + "environment": "windows_secondary", + "error_kind": "directory_not_empty", + "execution_mode": "apply", + "mcp_transit_required": true, + "next_action": "reduzir conteudo acessivel e registrar filhos retidos", + "reason": "diretorio ainda contem filho retido por erro anterior", + "relative_path": ".test-tmp", + "remediation_actions": [ + "best_effort_delete", + "continue_after_child_error", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "retain_with_evidence" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-d0ad8569490cf7d3fbf0fa6c", + "direct_delete_allowed": true, + "environment": "windows_secondary", + "error_kind": "file_locked", + "execution_mode": "apply", + "mcp_transit_required": true, + "next_action": "registrar caminho retido e solicitar owner autorizado", + "reason": "ACL ou processo externo reteve caminho depois de remover filhos acessiveis", + "relative_path": ".test-tmp", + "remediation_actions": [ + "best_effort_delete", + "continue_after_child_error", + "escalate_owner", + "record_acl_exception" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "owner_action_required" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-9cc8d387da8cc335efd68e3a", + "direct_delete_allowed": false, + "environment": "windows_secondary", + "error_kind": "unsafe_path", + "execution_mode": "apply", + "mcp_transit_required": true, + "next_action": "bloquear antes de qualquer escrita e registrar evidencia", + "reason": "path calculado sai do project_root ou cruza boundary de volume", + "relative_path": ".test-tmp", + "remediation_actions": [ + "block_before_write", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "block_unsafe" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-769cb1efd5f31fa84616585f", + "direct_delete_allowed": false, + "environment": "windows_secondary", + "error_kind": "central_write_denied", + "execution_mode": "apply", + "mcp_transit_required": true, + "next_action": "manter fallback no projeto real e registrar pendencia central", + "reason": "pasta central recusou escrita, mas projeto real deve registrar status", + "relative_path": ".test-tmp", + "remediation_actions": [ + "write_status_artifact", + "update_semantic_sql" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "retain_with_evidence" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-bf728d1d9afc76b2627a662a", + "direct_delete_allowed": false, + "environment": "windows_secondary", + "error_kind": "unknown", + "execution_mode": "apply", + "mcp_transit_required": true, + "next_action": "registrar erro bruto redigido e reavaliar proxima rodada", + "reason": "erro desconhecido deve ser evidenciado antes de nova tentativa", + "relative_path": ".test-tmp", + "remediation_actions": [ + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "retain_with_evidence" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-049c398e0663b27fb5609985", + "direct_delete_allowed": true, + "environment": "windows_secondary", + "error_kind": "none", + "execution_mode": "closeout", + "mcp_transit_required": true, + "next_action": "manter ausente e registrar status", + "reason": "artefato ausente ou removivel por limpeza local aprovada", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "no_error", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "pass" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-0ff76ce14fffe9fe665251e1", + "direct_delete_allowed": true, + "environment": "windows_secondary", + "error_kind": "not_found", + "execution_mode": "closeout", + "mcp_transit_required": true, + "next_action": "manter ausente e registrar status", + "reason": "artefato ausente ou removivel por limpeza local aprovada", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "pass" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-1451df7001a804cc3ee552dc", + "direct_delete_allowed": true, + "environment": "windows_secondary", + "error_kind": "permission_denied", + "execution_mode": "closeout", + "mcp_transit_required": true, + "next_action": "registrar caminho retido e solicitar owner autorizado", + "reason": "ACL ou processo externo reteve caminho depois de remover filhos acessiveis", + "relative_path": ".test-tmp", + "remediation_actions": [ + "best_effort_delete", + "continue_after_child_error", + "escalate_owner", + "record_acl_exception" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "owner_action_required" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-2cc605680ae873c818865b33", + "direct_delete_allowed": true, + "environment": "windows_secondary", + "error_kind": "directory_not_empty", + "execution_mode": "closeout", + "mcp_transit_required": true, + "next_action": "reduzir conteudo acessivel e registrar filhos retidos", + "reason": "diretorio ainda contem filho retido por erro anterior", + "relative_path": ".test-tmp", + "remediation_actions": [ + "best_effort_delete", + "continue_after_child_error", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "retain_with_evidence" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-cb226b7380849e26aa4d76c7", + "direct_delete_allowed": true, + "environment": "windows_secondary", + "error_kind": "file_locked", + "execution_mode": "closeout", + "mcp_transit_required": true, + "next_action": "registrar caminho retido e solicitar owner autorizado", + "reason": "ACL ou processo externo reteve caminho depois de remover filhos acessiveis", + "relative_path": ".test-tmp", + "remediation_actions": [ + "best_effort_delete", + "continue_after_child_error", + "escalate_owner", + "record_acl_exception" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "owner_action_required" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-63a68ccc0d018e2fe1546090", + "direct_delete_allowed": false, + "environment": "windows_secondary", + "error_kind": "unsafe_path", + "execution_mode": "closeout", + "mcp_transit_required": true, + "next_action": "bloquear antes de qualquer escrita e registrar evidencia", + "reason": "path calculado sai do project_root ou cruza boundary de volume", + "relative_path": ".test-tmp", + "remediation_actions": [ + "block_before_write", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "block_unsafe" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-20906dab1c11fbb4cebf2b62", + "direct_delete_allowed": false, + "environment": "windows_secondary", + "error_kind": "central_write_denied", + "execution_mode": "closeout", + "mcp_transit_required": true, + "next_action": "manter fallback no projeto real e registrar pendencia central", + "reason": "pasta central recusou escrita, mas projeto real deve registrar status", + "relative_path": ".test-tmp", + "remediation_actions": [ + "write_status_artifact", + "update_semantic_sql" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "retain_with_evidence" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-2221a710356ed9e7607ef7f3", + "direct_delete_allowed": false, + "environment": "windows_secondary", + "error_kind": "unknown", + "execution_mode": "closeout", + "mcp_transit_required": true, + "next_action": "registrar erro bruto redigido e reavaliar proxima rodada", + "reason": "erro desconhecido deve ser evidenciado antes de nova tentativa", + "relative_path": ".test-tmp", + "remediation_actions": [ + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "retain_with_evidence" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-714c981b7e3ac0583c2a9b9f", + "direct_delete_allowed": true, + "environment": "windows_secondary", + "error_kind": "none", + "execution_mode": "central_record", + "mcp_transit_required": true, + "next_action": "manter ausente e registrar status", + "reason": "artefato ausente ou removivel por limpeza local aprovada", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "no_error", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "pass" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-c99a74dc347c76b2b57bb2e1", + "direct_delete_allowed": true, + "environment": "windows_secondary", + "error_kind": "not_found", + "execution_mode": "central_record", + "mcp_transit_required": true, + "next_action": "manter ausente e registrar status", + "reason": "artefato ausente ou removivel por limpeza local aprovada", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "pass" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-eb582edade7af46be10eea64", + "direct_delete_allowed": true, + "environment": "windows_secondary", + "error_kind": "permission_denied", + "execution_mode": "central_record", + "mcp_transit_required": true, + "next_action": "registrar caminho retido e solicitar owner autorizado", + "reason": "ACL ou processo externo reteve caminho depois de remover filhos acessiveis", + "relative_path": ".test-tmp", + "remediation_actions": [ + "best_effort_delete", + "continue_after_child_error", + "escalate_owner", + "record_acl_exception" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "owner_action_required" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-2acae1058db81e26fe74bf74", + "direct_delete_allowed": true, + "environment": "windows_secondary", + "error_kind": "directory_not_empty", + "execution_mode": "central_record", + "mcp_transit_required": true, + "next_action": "reduzir conteudo acessivel e registrar filhos retidos", + "reason": "diretorio ainda contem filho retido por erro anterior", + "relative_path": ".test-tmp", + "remediation_actions": [ + "best_effort_delete", + "continue_after_child_error", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "retain_with_evidence" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-00a57f8e2a5229b50f48463f", + "direct_delete_allowed": true, + "environment": "windows_secondary", + "error_kind": "file_locked", + "execution_mode": "central_record", + "mcp_transit_required": true, + "next_action": "registrar caminho retido e solicitar owner autorizado", + "reason": "ACL ou processo externo reteve caminho depois de remover filhos acessiveis", + "relative_path": ".test-tmp", + "remediation_actions": [ + "best_effort_delete", + "continue_after_child_error", + "escalate_owner", + "record_acl_exception" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "owner_action_required" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-2d76fae86d19d0550d374952", + "direct_delete_allowed": false, + "environment": "windows_secondary", + "error_kind": "unsafe_path", + "execution_mode": "central_record", + "mcp_transit_required": true, + "next_action": "bloquear antes de qualquer escrita e registrar evidencia", + "reason": "path calculado sai do project_root ou cruza boundary de volume", + "relative_path": ".test-tmp", + "remediation_actions": [ + "block_before_write", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "block_unsafe" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-20ab0f83d53c3cd4c8a67f08", + "direct_delete_allowed": false, + "environment": "windows_secondary", + "error_kind": "central_write_denied", + "execution_mode": "central_record", + "mcp_transit_required": true, + "next_action": "manter fallback no projeto real e registrar pendencia central", + "reason": "pasta central recusou escrita, mas projeto real deve registrar status", + "relative_path": ".test-tmp", + "remediation_actions": [ + "write_status_artifact", + "update_semantic_sql" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "retain_with_evidence" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-83f282f1d7fe2cca0bd27934", + "direct_delete_allowed": false, + "environment": "windows_secondary", + "error_kind": "unknown", + "execution_mode": "central_record", + "mcp_transit_required": true, + "next_action": "registrar erro bruto redigido e reavaliar proxima rodada", + "reason": "erro desconhecido deve ser evidenciado antes de nova tentativa", + "relative_path": ".test-tmp", + "remediation_actions": [ + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "retain_with_evidence" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-90f58c90392bba2d16c0dbd8", + "direct_delete_allowed": false, + "environment": "codex_server", + "error_kind": "none", + "execution_mode": "inspect", + "mcp_transit_required": true, + "next_action": "registrar footprint e executar apply apenas no fechamento", + "reason": "modo inspecao nunca apaga artefato", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "no_error", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "record_only" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-7694790458af6a1d5b93d85b", + "direct_delete_allowed": false, + "environment": "codex_server", + "error_kind": "not_found", + "execution_mode": "inspect", + "mcp_transit_required": true, + "next_action": "registrar footprint e executar apply apenas no fechamento", + "reason": "modo inspecao nunca apaga artefato", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "record_only" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-e830494add59daf1410a11a6", + "direct_delete_allowed": false, + "environment": "codex_server", + "error_kind": "permission_denied", + "execution_mode": "inspect", + "mcp_transit_required": true, + "next_action": "registrar footprint e executar apply apenas no fechamento", + "reason": "modo inspecao nunca apaga artefato", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "record_only" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-b120f9fd5fa901c522ef7d14", + "direct_delete_allowed": false, + "environment": "codex_server", + "error_kind": "directory_not_empty", + "execution_mode": "inspect", + "mcp_transit_required": true, + "next_action": "registrar footprint e executar apply apenas no fechamento", + "reason": "modo inspecao nunca apaga artefato", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "record_only" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-ebe8bd703ba081cef5c7d379", + "direct_delete_allowed": false, + "environment": "codex_server", + "error_kind": "file_locked", + "execution_mode": "inspect", + "mcp_transit_required": true, + "next_action": "registrar footprint e executar apply apenas no fechamento", + "reason": "modo inspecao nunca apaga artefato", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "record_only" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-7fe73882bbf81c6c267106d0", + "direct_delete_allowed": false, + "environment": "codex_server", + "error_kind": "unsafe_path", + "execution_mode": "inspect", + "mcp_transit_required": true, + "next_action": "bloquear antes de qualquer escrita e registrar evidencia", + "reason": "path calculado sai do project_root ou cruza boundary de volume", + "relative_path": ".test-tmp", + "remediation_actions": [ + "block_before_write", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "block_unsafe" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-b65b014821b311f4c5991681", + "direct_delete_allowed": false, + "environment": "codex_server", + "error_kind": "central_write_denied", + "execution_mode": "inspect", + "mcp_transit_required": true, + "next_action": "registrar footprint e executar apply apenas no fechamento", + "reason": "modo inspecao nunca apaga artefato", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "record_only" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-8049cd78fdda5b4b748f5074", + "direct_delete_allowed": false, + "environment": "codex_server", + "error_kind": "unknown", + "execution_mode": "inspect", + "mcp_transit_required": true, + "next_action": "registrar footprint e executar apply apenas no fechamento", + "reason": "modo inspecao nunca apaga artefato", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "record_only" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-584d53c3180c3596cb9021f0", + "direct_delete_allowed": true, + "environment": "codex_server", + "error_kind": "none", + "execution_mode": "apply", + "mcp_transit_required": true, + "next_action": "manter ausente e registrar status", + "reason": "artefato ausente ou removivel por limpeza local aprovada", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "no_error", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "pass" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-ab6e1d396d8421f67657dcf1", + "direct_delete_allowed": true, + "environment": "codex_server", + "error_kind": "not_found", + "execution_mode": "apply", + "mcp_transit_required": true, + "next_action": "manter ausente e registrar status", + "reason": "artefato ausente ou removivel por limpeza local aprovada", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "pass" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-af6f8916bf733c4a553d50e3", + "direct_delete_allowed": true, + "environment": "codex_server", + "error_kind": "permission_denied", + "execution_mode": "apply", + "mcp_transit_required": true, + "next_action": "registrar caminho retido e solicitar owner autorizado", + "reason": "ACL ou processo externo reteve caminho depois de remover filhos acessiveis", + "relative_path": ".test-tmp", + "remediation_actions": [ + "best_effort_delete", + "continue_after_child_error", + "escalate_owner", + "record_acl_exception" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "owner_action_required" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-3b75f906ae19b7cac43af2f6", + "direct_delete_allowed": true, + "environment": "codex_server", + "error_kind": "directory_not_empty", + "execution_mode": "apply", + "mcp_transit_required": true, + "next_action": "reduzir conteudo acessivel e registrar filhos retidos", + "reason": "diretorio ainda contem filho retido por erro anterior", + "relative_path": ".test-tmp", + "remediation_actions": [ + "best_effort_delete", + "continue_after_child_error", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "retain_with_evidence" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-6372da5f33fc0af7df08e000", + "direct_delete_allowed": true, + "environment": "codex_server", + "error_kind": "file_locked", + "execution_mode": "apply", + "mcp_transit_required": true, + "next_action": "registrar caminho retido e solicitar owner autorizado", + "reason": "ACL ou processo externo reteve caminho depois de remover filhos acessiveis", + "relative_path": ".test-tmp", + "remediation_actions": [ + "best_effort_delete", + "continue_after_child_error", + "escalate_owner", + "record_acl_exception" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "owner_action_required" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-d95aca64f3bee2b9921624be", + "direct_delete_allowed": false, + "environment": "codex_server", + "error_kind": "unsafe_path", + "execution_mode": "apply", + "mcp_transit_required": true, + "next_action": "bloquear antes de qualquer escrita e registrar evidencia", + "reason": "path calculado sai do project_root ou cruza boundary de volume", + "relative_path": ".test-tmp", + "remediation_actions": [ + "block_before_write", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "block_unsafe" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-d71b3e6ba8346080dd3288e2", + "direct_delete_allowed": false, + "environment": "codex_server", + "error_kind": "central_write_denied", + "execution_mode": "apply", + "mcp_transit_required": true, + "next_action": "manter fallback no projeto real e registrar pendencia central", + "reason": "pasta central recusou escrita, mas projeto real deve registrar status", + "relative_path": ".test-tmp", + "remediation_actions": [ + "write_status_artifact", + "update_semantic_sql" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "retain_with_evidence" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-0bcdd168427902e850455395", + "direct_delete_allowed": false, + "environment": "codex_server", + "error_kind": "unknown", + "execution_mode": "apply", + "mcp_transit_required": true, + "next_action": "registrar erro bruto redigido e reavaliar proxima rodada", + "reason": "erro desconhecido deve ser evidenciado antes de nova tentativa", + "relative_path": ".test-tmp", + "remediation_actions": [ + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "retain_with_evidence" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-cc007fc291a3b69cd7ea24c0", + "direct_delete_allowed": true, + "environment": "codex_server", + "error_kind": "none", + "execution_mode": "closeout", + "mcp_transit_required": true, + "next_action": "manter ausente e registrar status", + "reason": "artefato ausente ou removivel por limpeza local aprovada", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "no_error", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "pass" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-28d6a774f54ee1922b1f46a2", + "direct_delete_allowed": true, + "environment": "codex_server", + "error_kind": "not_found", + "execution_mode": "closeout", + "mcp_transit_required": true, + "next_action": "manter ausente e registrar status", + "reason": "artefato ausente ou removivel por limpeza local aprovada", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "pass" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-7f8126d5be90d3ed452a4b46", + "direct_delete_allowed": true, + "environment": "codex_server", + "error_kind": "permission_denied", + "execution_mode": "closeout", + "mcp_transit_required": true, + "next_action": "registrar caminho retido e solicitar owner autorizado", + "reason": "ACL ou processo externo reteve caminho depois de remover filhos acessiveis", + "relative_path": ".test-tmp", + "remediation_actions": [ + "best_effort_delete", + "continue_after_child_error", + "escalate_owner", + "record_acl_exception" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "owner_action_required" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-e3afeb4071ffdc5c8ca275cb", + "direct_delete_allowed": true, + "environment": "codex_server", + "error_kind": "directory_not_empty", + "execution_mode": "closeout", + "mcp_transit_required": true, + "next_action": "reduzir conteudo acessivel e registrar filhos retidos", + "reason": "diretorio ainda contem filho retido por erro anterior", + "relative_path": ".test-tmp", + "remediation_actions": [ + "best_effort_delete", + "continue_after_child_error", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "retain_with_evidence" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-378670f0c0da94b76e41337f", + "direct_delete_allowed": true, + "environment": "codex_server", + "error_kind": "file_locked", + "execution_mode": "closeout", + "mcp_transit_required": true, + "next_action": "registrar caminho retido e solicitar owner autorizado", + "reason": "ACL ou processo externo reteve caminho depois de remover filhos acessiveis", + "relative_path": ".test-tmp", + "remediation_actions": [ + "best_effort_delete", + "continue_after_child_error", + "escalate_owner", + "record_acl_exception" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "owner_action_required" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-2c08995b13ab2b04bb3b6ffe", + "direct_delete_allowed": false, + "environment": "codex_server", + "error_kind": "unsafe_path", + "execution_mode": "closeout", + "mcp_transit_required": true, + "next_action": "bloquear antes de qualquer escrita e registrar evidencia", + "reason": "path calculado sai do project_root ou cruza boundary de volume", + "relative_path": ".test-tmp", + "remediation_actions": [ + "block_before_write", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "block_unsafe" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-9485cd580b4d0af0a7a973af", + "direct_delete_allowed": false, + "environment": "codex_server", + "error_kind": "central_write_denied", + "execution_mode": "closeout", + "mcp_transit_required": true, + "next_action": "manter fallback no projeto real e registrar pendencia central", + "reason": "pasta central recusou escrita, mas projeto real deve registrar status", + "relative_path": ".test-tmp", + "remediation_actions": [ + "write_status_artifact", + "update_semantic_sql" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "retain_with_evidence" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-cbc55dafff001c0562f0bef3", + "direct_delete_allowed": false, + "environment": "codex_server", + "error_kind": "unknown", + "execution_mode": "closeout", + "mcp_transit_required": true, + "next_action": "registrar erro bruto redigido e reavaliar proxima rodada", + "reason": "erro desconhecido deve ser evidenciado antes de nova tentativa", + "relative_path": ".test-tmp", + "remediation_actions": [ + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "retain_with_evidence" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-22763dfd22f3427e4be37b5e", + "direct_delete_allowed": true, + "environment": "codex_server", + "error_kind": "none", + "execution_mode": "central_record", + "mcp_transit_required": true, + "next_action": "manter ausente e registrar status", + "reason": "artefato ausente ou removivel por limpeza local aprovada", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "no_error", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "pass" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-8a0be41aadd8f750a42b87a5", + "direct_delete_allowed": true, + "environment": "codex_server", + "error_kind": "not_found", + "execution_mode": "central_record", + "mcp_transit_required": true, + "next_action": "manter ausente e registrar status", + "reason": "artefato ausente ou removivel por limpeza local aprovada", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "pass" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-76fe8963137008f415c43ac2", + "direct_delete_allowed": true, + "environment": "codex_server", + "error_kind": "permission_denied", + "execution_mode": "central_record", + "mcp_transit_required": true, + "next_action": "registrar caminho retido e solicitar owner autorizado", + "reason": "ACL ou processo externo reteve caminho depois de remover filhos acessiveis", + "relative_path": ".test-tmp", + "remediation_actions": [ + "best_effort_delete", + "continue_after_child_error", + "escalate_owner", + "record_acl_exception" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "owner_action_required" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-c8c91cbc66392434a5d8d69c", + "direct_delete_allowed": true, + "environment": "codex_server", + "error_kind": "directory_not_empty", + "execution_mode": "central_record", + "mcp_transit_required": true, + "next_action": "reduzir conteudo acessivel e registrar filhos retidos", + "reason": "diretorio ainda contem filho retido por erro anterior", + "relative_path": ".test-tmp", + "remediation_actions": [ + "best_effort_delete", + "continue_after_child_error", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "retain_with_evidence" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-0eabe7f254bd4d2b07edc4df", + "direct_delete_allowed": true, + "environment": "codex_server", + "error_kind": "file_locked", + "execution_mode": "central_record", + "mcp_transit_required": true, + "next_action": "registrar caminho retido e solicitar owner autorizado", + "reason": "ACL ou processo externo reteve caminho depois de remover filhos acessiveis", + "relative_path": ".test-tmp", + "remediation_actions": [ + "best_effort_delete", + "continue_after_child_error", + "escalate_owner", + "record_acl_exception" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "owner_action_required" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-5518aa68e537145ebd300456", + "direct_delete_allowed": false, + "environment": "codex_server", + "error_kind": "unsafe_path", + "execution_mode": "central_record", + "mcp_transit_required": true, + "next_action": "bloquear antes de qualquer escrita e registrar evidencia", + "reason": "path calculado sai do project_root ou cruza boundary de volume", + "relative_path": ".test-tmp", + "remediation_actions": [ + "block_before_write", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "block_unsafe" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-8477ded0dcdcee9a35b00aed", + "direct_delete_allowed": false, + "environment": "codex_server", + "error_kind": "central_write_denied", + "execution_mode": "central_record", + "mcp_transit_required": true, + "next_action": "manter fallback no projeto real e registrar pendencia central", + "reason": "pasta central recusou escrita, mas projeto real deve registrar status", + "relative_path": ".test-tmp", + "remediation_actions": [ + "write_status_artifact", + "update_semantic_sql" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "retain_with_evidence" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-6e5b815392f6834673d31925", + "direct_delete_allowed": false, + "environment": "codex_server", + "error_kind": "unknown", + "execution_mode": "central_record", + "mcp_transit_required": true, + "next_action": "registrar erro bruto redigido e reavaliar proxima rodada", + "reason": "erro desconhecido deve ser evidenciado antes de nova tentativa", + "relative_path": ".test-tmp", + "remediation_actions": [ + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "retain_with_evidence" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-5ffa6841c55ac7d2dde25101", + "direct_delete_allowed": false, + "environment": "gitlab_server", + "error_kind": "none", + "execution_mode": "inspect", + "mcp_transit_required": true, + "next_action": "registrar footprint e executar apply apenas no fechamento", + "reason": "modo inspecao nunca apaga artefato", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "no_error", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "record_only" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-a65ecf1d26472ac2f80708da", + "direct_delete_allowed": false, + "environment": "gitlab_server", + "error_kind": "not_found", + "execution_mode": "inspect", + "mcp_transit_required": true, + "next_action": "registrar footprint e executar apply apenas no fechamento", + "reason": "modo inspecao nunca apaga artefato", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "record_only" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-a1f11a28529a69f3e95833e9", + "direct_delete_allowed": false, + "environment": "gitlab_server", + "error_kind": "permission_denied", + "execution_mode": "inspect", + "mcp_transit_required": true, + "next_action": "registrar footprint e executar apply apenas no fechamento", + "reason": "modo inspecao nunca apaga artefato", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "record_only" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-99abbd5a1eb0e7929af417f6", + "direct_delete_allowed": false, + "environment": "gitlab_server", + "error_kind": "directory_not_empty", + "execution_mode": "inspect", + "mcp_transit_required": true, + "next_action": "registrar footprint e executar apply apenas no fechamento", + "reason": "modo inspecao nunca apaga artefato", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "record_only" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-f4ad0bb16153300f1a25a901", + "direct_delete_allowed": false, + "environment": "gitlab_server", + "error_kind": "file_locked", + "execution_mode": "inspect", + "mcp_transit_required": true, + "next_action": "registrar footprint e executar apply apenas no fechamento", + "reason": "modo inspecao nunca apaga artefato", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "record_only" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-80f4339eb402aa6cec167cd5", + "direct_delete_allowed": false, + "environment": "gitlab_server", + "error_kind": "unsafe_path", + "execution_mode": "inspect", + "mcp_transit_required": true, + "next_action": "bloquear antes de qualquer escrita e registrar evidencia", + "reason": "path calculado sai do project_root ou cruza boundary de volume", + "relative_path": ".test-tmp", + "remediation_actions": [ + "block_before_write", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "block_unsafe" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-a5c6c14c3479502f1f9d7f4d", + "direct_delete_allowed": false, + "environment": "gitlab_server", + "error_kind": "central_write_denied", + "execution_mode": "inspect", + "mcp_transit_required": true, + "next_action": "registrar footprint e executar apply apenas no fechamento", + "reason": "modo inspecao nunca apaga artefato", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "record_only" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-fa4fd8681fafee7c8f18af8c", + "direct_delete_allowed": false, + "environment": "gitlab_server", + "error_kind": "unknown", + "execution_mode": "inspect", + "mcp_transit_required": true, + "next_action": "registrar footprint e executar apply apenas no fechamento", + "reason": "modo inspecao nunca apaga artefato", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "record_only" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-6b1c1d1c9dfaf94b8efed10b", + "direct_delete_allowed": true, + "environment": "gitlab_server", + "error_kind": "none", + "execution_mode": "apply", + "mcp_transit_required": true, + "next_action": "manter ausente e registrar status", + "reason": "artefato ausente ou removivel por limpeza local aprovada", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "no_error", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "pass" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-5b6db81da438edf0601a1182", + "direct_delete_allowed": true, + "environment": "gitlab_server", + "error_kind": "not_found", + "execution_mode": "apply", + "mcp_transit_required": true, + "next_action": "manter ausente e registrar status", + "reason": "artefato ausente ou removivel por limpeza local aprovada", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "pass" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-33e1a31f6fc267e31bb4253d", + "direct_delete_allowed": true, + "environment": "gitlab_server", + "error_kind": "permission_denied", + "execution_mode": "apply", + "mcp_transit_required": true, + "next_action": "registrar caminho retido e solicitar owner autorizado", + "reason": "ACL ou processo externo reteve caminho depois de remover filhos acessiveis", + "relative_path": ".test-tmp", + "remediation_actions": [ + "best_effort_delete", + "continue_after_child_error", + "escalate_owner", + "record_acl_exception" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "owner_action_required" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-c75fb638d286f8afaed9d2ba", + "direct_delete_allowed": true, + "environment": "gitlab_server", + "error_kind": "directory_not_empty", + "execution_mode": "apply", + "mcp_transit_required": true, + "next_action": "reduzir conteudo acessivel e registrar filhos retidos", + "reason": "diretorio ainda contem filho retido por erro anterior", + "relative_path": ".test-tmp", + "remediation_actions": [ + "best_effort_delete", + "continue_after_child_error", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "retain_with_evidence" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-748fbcdc57ec12fd1ce44e70", + "direct_delete_allowed": true, + "environment": "gitlab_server", + "error_kind": "file_locked", + "execution_mode": "apply", + "mcp_transit_required": true, + "next_action": "registrar caminho retido e solicitar owner autorizado", + "reason": "ACL ou processo externo reteve caminho depois de remover filhos acessiveis", + "relative_path": ".test-tmp", + "remediation_actions": [ + "best_effort_delete", + "continue_after_child_error", + "escalate_owner", + "record_acl_exception" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "owner_action_required" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-f7a758fe801cc5b4743ec151", + "direct_delete_allowed": false, + "environment": "gitlab_server", + "error_kind": "unsafe_path", + "execution_mode": "apply", + "mcp_transit_required": true, + "next_action": "bloquear antes de qualquer escrita e registrar evidencia", + "reason": "path calculado sai do project_root ou cruza boundary de volume", + "relative_path": ".test-tmp", + "remediation_actions": [ + "block_before_write", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "block_unsafe" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-afcdf7d73b4fe7cf4adea34f", + "direct_delete_allowed": false, + "environment": "gitlab_server", + "error_kind": "central_write_denied", + "execution_mode": "apply", + "mcp_transit_required": true, + "next_action": "manter fallback no projeto real e registrar pendencia central", + "reason": "pasta central recusou escrita, mas projeto real deve registrar status", + "relative_path": ".test-tmp", + "remediation_actions": [ + "write_status_artifact", + "update_semantic_sql" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "retain_with_evidence" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-4a9ee36e754c0302cddb200d", + "direct_delete_allowed": false, + "environment": "gitlab_server", + "error_kind": "unknown", + "execution_mode": "apply", + "mcp_transit_required": true, + "next_action": "registrar erro bruto redigido e reavaliar proxima rodada", + "reason": "erro desconhecido deve ser evidenciado antes de nova tentativa", + "relative_path": ".test-tmp", + "remediation_actions": [ + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "retain_with_evidence" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-bc68bf7997276f2f14083341", + "direct_delete_allowed": true, + "environment": "gitlab_server", + "error_kind": "none", + "execution_mode": "closeout", + "mcp_transit_required": true, + "next_action": "manter ausente e registrar status", + "reason": "artefato ausente ou removivel por limpeza local aprovada", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "no_error", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "pass" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-343d4f8a2717542a5c14959f", + "direct_delete_allowed": true, + "environment": "gitlab_server", + "error_kind": "not_found", + "execution_mode": "closeout", + "mcp_transit_required": true, + "next_action": "manter ausente e registrar status", + "reason": "artefato ausente ou removivel por limpeza local aprovada", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "pass" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-d14074d435161e2497fad6da", + "direct_delete_allowed": true, + "environment": "gitlab_server", + "error_kind": "permission_denied", + "execution_mode": "closeout", + "mcp_transit_required": true, + "next_action": "registrar caminho retido e solicitar owner autorizado", + "reason": "ACL ou processo externo reteve caminho depois de remover filhos acessiveis", + "relative_path": ".test-tmp", + "remediation_actions": [ + "best_effort_delete", + "continue_after_child_error", + "escalate_owner", + "record_acl_exception" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "owner_action_required" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-2f10d6b61b7059a68dfbbe07", + "direct_delete_allowed": true, + "environment": "gitlab_server", + "error_kind": "directory_not_empty", + "execution_mode": "closeout", + "mcp_transit_required": true, + "next_action": "reduzir conteudo acessivel e registrar filhos retidos", + "reason": "diretorio ainda contem filho retido por erro anterior", + "relative_path": ".test-tmp", + "remediation_actions": [ + "best_effort_delete", + "continue_after_child_error", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "retain_with_evidence" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-ad53abfd7c68c1effeb5f810", + "direct_delete_allowed": true, + "environment": "gitlab_server", + "error_kind": "file_locked", + "execution_mode": "closeout", + "mcp_transit_required": true, + "next_action": "registrar caminho retido e solicitar owner autorizado", + "reason": "ACL ou processo externo reteve caminho depois de remover filhos acessiveis", + "relative_path": ".test-tmp", + "remediation_actions": [ + "best_effort_delete", + "continue_after_child_error", + "escalate_owner", + "record_acl_exception" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "owner_action_required" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-baabf5ef53d72a19ed7c2a59", + "direct_delete_allowed": false, + "environment": "gitlab_server", + "error_kind": "unsafe_path", + "execution_mode": "closeout", + "mcp_transit_required": true, + "next_action": "bloquear antes de qualquer escrita e registrar evidencia", + "reason": "path calculado sai do project_root ou cruza boundary de volume", + "relative_path": ".test-tmp", + "remediation_actions": [ + "block_before_write", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "block_unsafe" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-6604445f7678fbb9a4156277", + "direct_delete_allowed": false, + "environment": "gitlab_server", + "error_kind": "central_write_denied", + "execution_mode": "closeout", + "mcp_transit_required": true, + "next_action": "manter fallback no projeto real e registrar pendencia central", + "reason": "pasta central recusou escrita, mas projeto real deve registrar status", + "relative_path": ".test-tmp", + "remediation_actions": [ + "write_status_artifact", + "update_semantic_sql" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "retain_with_evidence" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-2590b640d600bc0d63323930", + "direct_delete_allowed": false, + "environment": "gitlab_server", + "error_kind": "unknown", + "execution_mode": "closeout", + "mcp_transit_required": true, + "next_action": "registrar erro bruto redigido e reavaliar proxima rodada", + "reason": "erro desconhecido deve ser evidenciado antes de nova tentativa", + "relative_path": ".test-tmp", + "remediation_actions": [ + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "retain_with_evidence" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-51804e769de8309aaefad244", + "direct_delete_allowed": true, + "environment": "gitlab_server", + "error_kind": "none", + "execution_mode": "central_record", + "mcp_transit_required": true, + "next_action": "manter ausente e registrar status", + "reason": "artefato ausente ou removivel por limpeza local aprovada", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "no_error", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "pass" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-535f4c2d93d5e413d8362dc8", + "direct_delete_allowed": true, + "environment": "gitlab_server", + "error_kind": "not_found", + "execution_mode": "central_record", + "mcp_transit_required": true, + "next_action": "manter ausente e registrar status", + "reason": "artefato ausente ou removivel por limpeza local aprovada", + "relative_path": ".test-tmp", + "remediation_actions": [ + "verify_absent" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "pass" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-cf5b961e74036f38575a686f", + "direct_delete_allowed": true, + "environment": "gitlab_server", + "error_kind": "permission_denied", + "execution_mode": "central_record", + "mcp_transit_required": true, + "next_action": "registrar caminho retido e solicitar owner autorizado", + "reason": "ACL ou processo externo reteve caminho depois de remover filhos acessiveis", + "relative_path": ".test-tmp", + "remediation_actions": [ + "best_effort_delete", + "continue_after_child_error", + "escalate_owner", + "record_acl_exception" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "owner_action_required" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-8cf2fe40310412db84d5416e", + "direct_delete_allowed": true, + "environment": "gitlab_server", + "error_kind": "directory_not_empty", + "execution_mode": "central_record", + "mcp_transit_required": true, + "next_action": "reduzir conteudo acessivel e registrar filhos retidos", + "reason": "diretorio ainda contem filho retido por erro anterior", + "relative_path": ".test-tmp", + "remediation_actions": [ + "best_effort_delete", + "continue_after_child_error", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "retain_with_evidence" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-5be9c9d727f2bc8a211226e5", + "direct_delete_allowed": true, + "environment": "gitlab_server", + "error_kind": "file_locked", + "execution_mode": "central_record", + "mcp_transit_required": true, + "next_action": "registrar caminho retido e solicitar owner autorizado", + "reason": "ACL ou processo externo reteve caminho depois de remover filhos acessiveis", + "relative_path": ".test-tmp", + "remediation_actions": [ + "best_effort_delete", + "continue_after_child_error", + "escalate_owner", + "record_acl_exception" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "owner_action_required" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-43c3023c40e233b8afa72afc", + "direct_delete_allowed": false, + "environment": "gitlab_server", + "error_kind": "unsafe_path", + "execution_mode": "central_record", + "mcp_transit_required": true, + "next_action": "bloquear antes de qualquer escrita e registrar evidencia", + "reason": "path calculado sai do project_root ou cruza boundary de volume", + "relative_path": ".test-tmp", + "remediation_actions": [ + "block_before_write", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "block_unsafe" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-38c236c39f79265bcd40b8be", + "direct_delete_allowed": false, + "environment": "gitlab_server", + "error_kind": "central_write_denied", + "execution_mode": "central_record", + "mcp_transit_required": true, + "next_action": "manter fallback no projeto real e registrar pendencia central", + "reason": "pasta central recusou escrita, mas projeto real deve registrar status", + "relative_path": ".test-tmp", + "remediation_actions": [ + "write_status_artifact", + "update_semantic_sql" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "retain_with_evidence" + }, + { + "artifact_kind": "python_test_temp", + "case_id": "workspace-hygiene-policy-0cffebeafee9a325002b604a", + "direct_delete_allowed": false, + "environment": "gitlab_server", + "error_kind": "unknown", + "execution_mode": "central_record", + "mcp_transit_required": true, + "next_action": "registrar erro bruto redigido e reavaliar proxima rodada", + "reason": "erro desconhecido deve ser evidenciado antes de nova tentativa", + "relative_path": ".test-tmp", + "remediation_actions": [ + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "scratch criado por testes Python e comandos de validacao" + ], + "status": "retain_with_evidence" + }, + { + "artifact_kind": "node_dependencies", + "case_id": "workspace-hygiene-policy-d5151d41e08297b3206d1c33", + "direct_delete_allowed": false, + "environment": "windows_primary", + "error_kind": "none", + "execution_mode": "inspect", + "mcp_transit_required": true, + "next_action": "registrar footprint e executar apply apenas no fechamento", + "reason": "modo inspecao nunca apaga artefato", + "relative_path": "node_modules", + "remediation_actions": [ + "verify_absent", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "no_error", + "dependencias Node locais que nao devem sobreviver ao fechamento" + ], + "status": "record_only" + }, + { + "artifact_kind": "node_dependencies", + "case_id": "workspace-hygiene-policy-7dae5783cb24fb8b763a0ac3", + "direct_delete_allowed": false, + "environment": "windows_primary", + "error_kind": "not_found", + "execution_mode": "inspect", + "mcp_transit_required": true, + "next_action": "registrar footprint e executar apply apenas no fechamento", + "reason": "modo inspecao nunca apaga artefato", + "relative_path": "node_modules", + "remediation_actions": [ + "verify_absent", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "dependencias Node locais que nao devem sobreviver ao fechamento" + ], + "status": "record_only" + }, + { + "artifact_kind": "node_dependencies", + "case_id": "workspace-hygiene-policy-5cc4191363b70cf0aa7fb7ea", + "direct_delete_allowed": false, + "environment": "windows_primary", + "error_kind": "permission_denied", + "execution_mode": "inspect", + "mcp_transit_required": true, + "next_action": "registrar footprint e executar apply apenas no fechamento", + "reason": "modo inspecao nunca apaga artefato", + "relative_path": "node_modules", + "remediation_actions": [ + "verify_absent", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "dependencias Node locais que nao devem sobreviver ao fechamento" + ], + "status": "record_only" + }, + { + "artifact_kind": "node_dependencies", + "case_id": "workspace-hygiene-policy-de16bb5fc3c83a3c2b3cdfe9", + "direct_delete_allowed": false, + "environment": "windows_primary", + "error_kind": "directory_not_empty", + "execution_mode": "inspect", + "mcp_transit_required": true, + "next_action": "registrar footprint e executar apply apenas no fechamento", + "reason": "modo inspecao nunca apaga artefato", + "relative_path": "node_modules", + "remediation_actions": [ + "verify_absent", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "dependencias Node locais que nao devem sobreviver ao fechamento" + ], + "status": "record_only" + }, + { + "artifact_kind": "node_dependencies", + "case_id": "workspace-hygiene-policy-27b8e99b99322d1191afa957", + "direct_delete_allowed": false, + "environment": "windows_primary", + "error_kind": "file_locked", + "execution_mode": "inspect", + "mcp_transit_required": true, + "next_action": "registrar footprint e executar apply apenas no fechamento", + "reason": "modo inspecao nunca apaga artefato", + "relative_path": "node_modules", + "remediation_actions": [ + "verify_absent", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "dependencias Node locais que nao devem sobreviver ao fechamento" + ], + "status": "record_only" + }, + { + "artifact_kind": "node_dependencies", + "case_id": "workspace-hygiene-policy-36479d34daa393d20b712434", + "direct_delete_allowed": false, + "environment": "windows_primary", + "error_kind": "unsafe_path", + "execution_mode": "inspect", + "mcp_transit_required": true, + "next_action": "bloquear antes de qualquer escrita e registrar evidencia", + "reason": "path calculado sai do project_root ou cruza boundary de volume", + "relative_path": "node_modules", + "remediation_actions": [ + "block_before_write", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "dependencias Node locais que nao devem sobreviver ao fechamento" + ], + "status": "block_unsafe" + }, + { + "artifact_kind": "node_dependencies", + "case_id": "workspace-hygiene-policy-a6a83313cdc67b593f288949", + "direct_delete_allowed": false, + "environment": "windows_primary", + "error_kind": "central_write_denied", + "execution_mode": "inspect", + "mcp_transit_required": true, + "next_action": "registrar footprint e executar apply apenas no fechamento", + "reason": "modo inspecao nunca apaga artefato", + "relative_path": "node_modules", + "remediation_actions": [ + "verify_absent", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "dependencias Node locais que nao devem sobreviver ao fechamento" + ], + "status": "record_only" + }, + { + "artifact_kind": "node_dependencies", + "case_id": "workspace-hygiene-policy-c503d997fb7f21f84e21ea2b", + "direct_delete_allowed": false, + "environment": "windows_primary", + "error_kind": "unknown", + "execution_mode": "inspect", + "mcp_transit_required": true, + "next_action": "registrar footprint e executar apply apenas no fechamento", + "reason": "modo inspecao nunca apaga artefato", + "relative_path": "node_modules", + "remediation_actions": [ + "verify_absent", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "dependencias Node locais que nao devem sobreviver ao fechamento" + ], + "status": "record_only" + }, + { + "artifact_kind": "node_dependencies", + "case_id": "workspace-hygiene-policy-4de06bcc5dfa617a67a7fc97", + "direct_delete_allowed": true, + "environment": "windows_primary", + "error_kind": "none", + "execution_mode": "apply", + "mcp_transit_required": true, + "next_action": "manter ausente e registrar status", + "reason": "artefato ausente ou removivel por limpeza local aprovada", + "relative_path": "node_modules", + "remediation_actions": [ + "verify_absent" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "no_error", + "dependencias Node locais que nao devem sobreviver ao fechamento" + ], + "status": "pass" + }, + { + "artifact_kind": "node_dependencies", + "case_id": "workspace-hygiene-policy-d70bb38fcfedcba6216cb4b3", + "direct_delete_allowed": true, + "environment": "windows_primary", + "error_kind": "not_found", + "execution_mode": "apply", + "mcp_transit_required": true, + "next_action": "manter ausente e registrar status", + "reason": "artefato ausente ou removivel por limpeza local aprovada", + "relative_path": "node_modules", + "remediation_actions": [ + "verify_absent" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "dependencias Node locais que nao devem sobreviver ao fechamento" + ], + "status": "pass" + }, + { + "artifact_kind": "node_dependencies", + "case_id": "workspace-hygiene-policy-c8303b89af9eee76b80550de", + "direct_delete_allowed": true, + "environment": "windows_primary", + "error_kind": "permission_denied", + "execution_mode": "apply", + "mcp_transit_required": true, + "next_action": "registrar caminho retido e solicitar owner autorizado", + "reason": "ACL ou processo externo reteve caminho depois de remover filhos acessiveis", + "relative_path": "node_modules", + "remediation_actions": [ + "best_effort_delete", + "continue_after_child_error", + "escalate_owner", + "record_acl_exception" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "dependencias Node locais que nao devem sobreviver ao fechamento" + ], + "status": "owner_action_required" + }, + { + "artifact_kind": "node_dependencies", + "case_id": "workspace-hygiene-policy-4c91044db071ec4545422075", + "direct_delete_allowed": true, + "environment": "windows_primary", + "error_kind": "directory_not_empty", + "execution_mode": "apply", + "mcp_transit_required": true, + "next_action": "reduzir conteudo acessivel e registrar filhos retidos", + "reason": "diretorio ainda contem filho retido por erro anterior", + "relative_path": "node_modules", + "remediation_actions": [ + "best_effort_delete", + "continue_after_child_error", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "dependencias Node locais que nao devem sobreviver ao fechamento" + ], + "status": "retain_with_evidence" + }, + { + "artifact_kind": "node_dependencies", + "case_id": "workspace-hygiene-policy-0272f8771437a7740f2f9136", + "direct_delete_allowed": true, + "environment": "windows_primary", + "error_kind": "file_locked", + "execution_mode": "apply", + "mcp_transit_required": true, + "next_action": "registrar caminho retido e solicitar owner autorizado", + "reason": "ACL ou processo externo reteve caminho depois de remover filhos acessiveis", + "relative_path": "node_modules", + "remediation_actions": [ + "best_effort_delete", + "continue_after_child_error", + "escalate_owner", + "record_acl_exception" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "dependencias Node locais que nao devem sobreviver ao fechamento" + ], + "status": "owner_action_required" + }, + { + "artifact_kind": "node_dependencies", + "case_id": "workspace-hygiene-policy-21c823e66f985d3f8c4b9170", + "direct_delete_allowed": false, + "environment": "windows_primary", + "error_kind": "unsafe_path", + "execution_mode": "apply", + "mcp_transit_required": true, + "next_action": "bloquear antes de qualquer escrita e registrar evidencia", + "reason": "path calculado sai do project_root ou cruza boundary de volume", + "relative_path": "node_modules", + "remediation_actions": [ + "block_before_write", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "dependencias Node locais que nao devem sobreviver ao fechamento" + ], + "status": "block_unsafe" + }, + { + "artifact_kind": "node_dependencies", + "case_id": "workspace-hygiene-policy-ad7a6d36e185c59b0f51e492", + "direct_delete_allowed": false, + "environment": "windows_primary", + "error_kind": "central_write_denied", + "execution_mode": "apply", + "mcp_transit_required": true, + "next_action": "manter fallback no projeto real e registrar pendencia central", + "reason": "pasta central recusou escrita, mas projeto real deve registrar status", + "relative_path": "node_modules", + "remediation_actions": [ + "write_status_artifact", + "update_semantic_sql" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "dependencias Node locais que nao devem sobreviver ao fechamento" + ], + "status": "retain_with_evidence" + }, + { + "artifact_kind": "node_dependencies", + "case_id": "workspace-hygiene-policy-c4079fd105c06188b7648390", + "direct_delete_allowed": false, + "environment": "windows_primary", + "error_kind": "unknown", + "execution_mode": "apply", + "mcp_transit_required": true, + "next_action": "registrar erro bruto redigido e reavaliar proxima rodada", + "reason": "erro desconhecido deve ser evidenciado antes de nova tentativa", + "relative_path": "node_modules", + "remediation_actions": [ + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "dependencias Node locais que nao devem sobreviver ao fechamento" + ], + "status": "retain_with_evidence" + }, + { + "artifact_kind": "node_dependencies", + "case_id": "workspace-hygiene-policy-89fea55e0f2e7eed2dc6aed9", + "direct_delete_allowed": true, + "environment": "windows_primary", + "error_kind": "none", + "execution_mode": "closeout", + "mcp_transit_required": true, + "next_action": "manter ausente e registrar status", + "reason": "artefato ausente ou removivel por limpeza local aprovada", + "relative_path": "node_modules", + "remediation_actions": [ + "verify_absent" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "no_error", + "dependencias Node locais que nao devem sobreviver ao fechamento" + ], + "status": "pass" + }, + { + "artifact_kind": "node_dependencies", + "case_id": "workspace-hygiene-policy-11c6ae63b34d64d976737fd0", + "direct_delete_allowed": true, + "environment": "windows_primary", + "error_kind": "not_found", + "execution_mode": "closeout", + "mcp_transit_required": true, + "next_action": "manter ausente e registrar status", + "reason": "artefato ausente ou removivel por limpeza local aprovada", + "relative_path": "node_modules", + "remediation_actions": [ + "verify_absent" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "dependencias Node locais que nao devem sobreviver ao fechamento" + ], + "status": "pass" + }, + { + "artifact_kind": "node_dependencies", + "case_id": "workspace-hygiene-policy-9e3adb794c568779110e8dbc", + "direct_delete_allowed": true, + "environment": "windows_primary", + "error_kind": "permission_denied", + "execution_mode": "closeout", + "mcp_transit_required": true, + "next_action": "registrar caminho retido e solicitar owner autorizado", + "reason": "ACL ou processo externo reteve caminho depois de remover filhos acessiveis", + "relative_path": "node_modules", + "remediation_actions": [ + "best_effort_delete", + "continue_after_child_error", + "escalate_owner", + "record_acl_exception" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "dependencias Node locais que nao devem sobreviver ao fechamento" + ], + "status": "owner_action_required" + }, + { + "artifact_kind": "node_dependencies", + "case_id": "workspace-hygiene-policy-c98c7afd64d1bb2218ee70d5", + "direct_delete_allowed": true, + "environment": "windows_primary", + "error_kind": "directory_not_empty", + "execution_mode": "closeout", + "mcp_transit_required": true, + "next_action": "reduzir conteudo acessivel e registrar filhos retidos", + "reason": "diretorio ainda contem filho retido por erro anterior", + "relative_path": "node_modules", + "remediation_actions": [ + "best_effort_delete", + "continue_after_child_error", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "dependencias Node locais que nao devem sobreviver ao fechamento" + ], + "status": "retain_with_evidence" + }, + { + "artifact_kind": "node_dependencies", + "case_id": "workspace-hygiene-policy-24c958306c95534dbde3b460", + "direct_delete_allowed": true, + "environment": "windows_primary", + "error_kind": "file_locked", + "execution_mode": "closeout", + "mcp_transit_required": true, + "next_action": "registrar caminho retido e solicitar owner autorizado", + "reason": "ACL ou processo externo reteve caminho depois de remover filhos acessiveis", + "relative_path": "node_modules", + "remediation_actions": [ + "best_effort_delete", + "continue_after_child_error", + "escalate_owner", + "record_acl_exception" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "dependencias Node locais que nao devem sobreviver ao fechamento" + ], + "status": "owner_action_required" + }, + { + "artifact_kind": "node_dependencies", + "case_id": "workspace-hygiene-policy-839c53699769f17a64eaaa76", + "direct_delete_allowed": false, + "environment": "windows_primary", + "error_kind": "unsafe_path", + "execution_mode": "closeout", + "mcp_transit_required": true, + "next_action": "bloquear antes de qualquer escrita e registrar evidencia", + "reason": "path calculado sai do project_root ou cruza boundary de volume", + "relative_path": "node_modules", + "remediation_actions": [ + "block_before_write", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "dependencias Node locais que nao devem sobreviver ao fechamento" + ], + "status": "block_unsafe" + }, + { + "artifact_kind": "node_dependencies", + "case_id": "workspace-hygiene-policy-a655fea48365788022c7e790", + "direct_delete_allowed": false, + "environment": "windows_primary", + "error_kind": "central_write_denied", + "execution_mode": "closeout", + "mcp_transit_required": true, + "next_action": "manter fallback no projeto real e registrar pendencia central", + "reason": "pasta central recusou escrita, mas projeto real deve registrar status", + "relative_path": "node_modules", + "remediation_actions": [ + "write_status_artifact", + "update_semantic_sql" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "dependencias Node locais que nao devem sobreviver ao fechamento" + ], + "status": "retain_with_evidence" + }, + { + "artifact_kind": "node_dependencies", + "case_id": "workspace-hygiene-policy-2a5210ea72bd8bb5648c4211", + "direct_delete_allowed": false, + "environment": "windows_primary", + "error_kind": "unknown", + "execution_mode": "closeout", + "mcp_transit_required": true, + "next_action": "registrar erro bruto redigido e reavaliar proxima rodada", + "reason": "erro desconhecido deve ser evidenciado antes de nova tentativa", + "relative_path": "node_modules", + "remediation_actions": [ + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "dependencias Node locais que nao devem sobreviver ao fechamento" + ], + "status": "retain_with_evidence" + }, + { + "artifact_kind": "node_dependencies", + "case_id": "workspace-hygiene-policy-e6a260203c0b6d8b214c146e", + "direct_delete_allowed": true, + "environment": "windows_primary", + "error_kind": "none", + "execution_mode": "central_record", + "mcp_transit_required": true, + "next_action": "manter ausente e registrar status", + "reason": "artefato ausente ou removivel por limpeza local aprovada", + "relative_path": "node_modules", + "remediation_actions": [ + "verify_absent" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "no_error", + "dependencias Node locais que nao devem sobreviver ao fechamento" + ], + "status": "pass" + }, + { + "artifact_kind": "node_dependencies", + "case_id": "workspace-hygiene-policy-a2289586018365af90cf2177", + "direct_delete_allowed": true, + "environment": "windows_primary", + "error_kind": "not_found", + "execution_mode": "central_record", + "mcp_transit_required": true, + "next_action": "manter ausente e registrar status", + "reason": "artefato ausente ou removivel por limpeza local aprovada", + "relative_path": "node_modules", + "remediation_actions": [ + "verify_absent" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "dependencias Node locais que nao devem sobreviver ao fechamento" + ], + "status": "pass" + }, + { + "artifact_kind": "node_dependencies", + "case_id": "workspace-hygiene-policy-f373ab409a5d865c4616b846", + "direct_delete_allowed": true, + "environment": "windows_primary", + "error_kind": "permission_denied", + "execution_mode": "central_record", + "mcp_transit_required": true, + "next_action": "registrar caminho retido e solicitar owner autorizado", + "reason": "ACL ou processo externo reteve caminho depois de remover filhos acessiveis", + "relative_path": "node_modules", + "remediation_actions": [ + "best_effort_delete", + "continue_after_child_error", + "escalate_owner", + "record_acl_exception" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "dependencias Node locais que nao devem sobreviver ao fechamento" + ], + "status": "owner_action_required" + }, + { + "artifact_kind": "node_dependencies", + "case_id": "workspace-hygiene-policy-59be3a1386fd516a466bd267", + "direct_delete_allowed": true, + "environment": "windows_primary", + "error_kind": "directory_not_empty", + "execution_mode": "central_record", + "mcp_transit_required": true, + "next_action": "reduzir conteudo acessivel e registrar filhos retidos", + "reason": "diretorio ainda contem filho retido por erro anterior", + "relative_path": "node_modules", + "remediation_actions": [ + "best_effort_delete", + "continue_after_child_error", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "dependencias Node locais que nao devem sobreviver ao fechamento" + ], + "status": "retain_with_evidence" + }, + { + "artifact_kind": "node_dependencies", + "case_id": "workspace-hygiene-policy-f10f55b6afd52c1a022b8b08", + "direct_delete_allowed": true, + "environment": "windows_primary", + "error_kind": "file_locked", + "execution_mode": "central_record", + "mcp_transit_required": true, + "next_action": "registrar caminho retido e solicitar owner autorizado", + "reason": "ACL ou processo externo reteve caminho depois de remover filhos acessiveis", + "relative_path": "node_modules", + "remediation_actions": [ + "best_effort_delete", + "continue_after_child_error", + "escalate_owner", + "record_acl_exception" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "dependencias Node locais que nao devem sobreviver ao fechamento" + ], + "status": "owner_action_required" + }, + { + "artifact_kind": "node_dependencies", + "case_id": "workspace-hygiene-policy-5be8f3602b299290f9a51e10", + "direct_delete_allowed": false, + "environment": "windows_primary", + "error_kind": "unsafe_path", + "execution_mode": "central_record", + "mcp_transit_required": true, + "next_action": "bloquear antes de qualquer escrita e registrar evidencia", + "reason": "path calculado sai do project_root ou cruza boundary de volume", + "relative_path": "node_modules", + "remediation_actions": [ + "block_before_write", + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "dependencias Node locais que nao devem sobreviver ao fechamento" + ], + "status": "block_unsafe" + }, + { + "artifact_kind": "node_dependencies", + "case_id": "workspace-hygiene-policy-fbfadb1b540661acbbc7f29c", + "direct_delete_allowed": false, + "environment": "windows_primary", + "error_kind": "central_write_denied", + "execution_mode": "central_record", + "mcp_transit_required": true, + "next_action": "manter fallback no projeto real e registrar pendencia central", + "reason": "pasta central recusou escrita, mas projeto real deve registrar status", + "relative_path": "node_modules", + "remediation_actions": [ + "write_status_artifact", + "update_semantic_sql" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "dependencias Node locais que nao devem sobreviver ao fechamento" + ], + "status": "retain_with_evidence" + }, + { + "artifact_kind": "node_dependencies", + "case_id": "workspace-hygiene-policy-86fc556b8cde5f6021ca750e", + "direct_delete_allowed": false, + "environment": "windows_primary", + "error_kind": "unknown", + "execution_mode": "central_record", + "mcp_transit_required": true, + "next_action": "registrar erro bruto redigido e reavaliar proxima rodada", + "reason": "erro desconhecido deve ser evidenciado antes de nova tentativa", + "relative_path": "node_modules", + "remediation_actions": [ + "write_status_artifact" + ], + "required_evidence": [ + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt", + "dependencias Node locais que nao devem sobreviver ao fechamento" + ], + "status": "retain_with_evidence" + } + ], + "cases_count": 1536, + "cases_total": 1536, + "generated_at": "2026-05-02T10:28:39+00:00", + "owner_action_count": 288, + "report_id": "workspace-hygiene-policy-9147f326520c9100", + "summary": [ + "Policy cases: 1536.", + "Owner action cases: 288.", + "Unsafe path blocks: 192.", + "Best-effort cleanup must continue after child ACL errors and retain only inaccessible paths." + ], + "transit_fields": [ + "origin", + "destination", + "tool", + "payload", + "actor", + "permission", + "result", + "traceId", + "auditId", + "timestamp" + ], + "unsafe_block_count": 192 +} \ No newline at end of file diff --git a/dados/workspace-hygiene-report.json b/dados/workspace-hygiene-report.json index 70d7c96..4f3fd2a 100644 --- a/dados/workspace-hygiene-report.json +++ b/dados/workspace-hygiene-report.json @@ -4,10 +4,10 @@ "action": "delete_directory", "applied": true, "deleted": false, - "error": "PermissionError: [WinError 5] Acesso negado: 'G:\\\\_codex-git\\\\tudo-para-ia-mais-humana\\\\.test-tmp\\\\tmpnk6r4sdb'", + "error": "PermissionError: [WinError 5] Acesso negado: 'G:\\\\_codex-git\\\\tudo-para-ia-mais-humana\\\\.test-tmp\\\\tmpnk6r4sdb'; PermissionError: [WinError 5] Acesso negado: 'G:\\\\_codex-git\\\\tudo-para-ia-mais-humana\\\\.test-tmp\\\\tmpu13bzfhr'; OSError: [WinError 145] A pasta não está vazia: 'G:\\\\_codex-git\\\\tudo-para-ia-mais-humana\\\\.test-tmp'", "footprint_after": { "byte_count": 0, - "child_count": 1042, + "child_count": 2, "errors": [ "PermissionError: [WinError 5] Acesso negado: 'G:\\\\_codex-git\\\\tudo-para-ia-mais-humana\\\\.test-tmp\\\\tmpnk6r4sdb'", "PermissionError: [WinError 5] Acesso negado: 'G:\\\\_codex-git\\\\tudo-para-ia-mais-humana\\\\.test-tmp\\\\tmpu13bzfhr'" @@ -17,8 +17,8 @@ "is_file": false }, "footprint_before": { - "byte_count": 68130347, - "child_count": 3052, + "byte_count": 10279, + "child_count": 1186, "errors": [ "PermissionError: [WinError 5] Acesso negado: 'G:\\\\_codex-git\\\\tudo-para-ia-mais-humana\\\\.test-tmp\\\\tmpnk6r4sdb'", "PermissionError: [WinError 5] Acesso negado: 'G:\\\\_codex-git\\\\tudo-para-ia-mais-humana\\\\.test-tmp\\\\tmpu13bzfhr'" @@ -61,13 +61,13 @@ ], "apply": true, "blockers": [ - "python-test-temp:PermissionError: [WinError 5] Acesso negado: 'G:\\\\_codex-git\\\\tudo-para-ia-mais-humana\\\\.test-tmp\\\\tmpnk6r4sdb'" + "python-test-temp:PermissionError: [WinError 5] Acesso negado: 'G:\\\\_codex-git\\\\tudo-para-ia-mais-humana\\\\.test-tmp\\\\tmpnk6r4sdb'; PermissionError: [WinError 5] Acesso negado: 'G:\\\\_codex-git\\\\tudo-para-ia-mais-humana\\\\.test-tmp\\\\tmpu13bzfhr'; OSError: [WinError 145] A pasta não está vazia: 'G:\\\\_codex-git\\\\tudo-para-ia-mais-humana\\\\.test-tmp'" ], "central_platform_folder": "G:\\_codex-git\\nucleo-gestao-operacional\\central-de-ordem-de-servico\\projects\\15_repo_tudo-para-ia-mais-humana-platform", "clean": false, - "generated_at": "2026-05-02T09:27:04+00:00", + "generated_at": "2026-05-02T10:25:29+00:00", "project_root": "G:\\_codex-git\\tudo-para-ia-mais-humana", - "report_id": "workspace-hygiene-389155382838", + "report_id": "workspace-hygiene-441283210879", "status": "blocked", "summary": [ "Targets evaluated: 2.", diff --git a/ecossistema/WORKSPACE-HYGIENE-POLICY.md b/ecossistema/WORKSPACE-HYGIENE-POLICY.md new file mode 100644 index 0000000..0f18f4f --- /dev/null +++ b/ecossistema/WORKSPACE-HYGIENE-POLICY.md @@ -0,0 +1,104 @@ +# Politica de higiene de workspace + +- report_id: `workspace-hygiene-policy-9147f326520c9100` +- generated_at: `2026-05-02T10:28:39+00:00` +- cases: `1536` +- owner_action_cases: `288` +- unsafe_block_cases: `192` + +## Resumo + +- Policy cases: 1536. +- Owner action cases: 288. +- Unsafe path blocks: 192. +- Best-effort cleanup must continue after child ACL errors and retain only inaccessible paths. + +## Casos amostrais + +- `workspace-hygiene-policy-5d2027200080cdc46bb65f26` `.test-tmp` `windows_primary` `inspect` `none` -> `record_only` actions `verify_absent, write_status_artifact` +- `workspace-hygiene-policy-228473216bb503bc783a215c` `.test-tmp` `windows_primary` `inspect` `not_found` -> `record_only` actions `verify_absent, write_status_artifact` +- `workspace-hygiene-policy-cb761d2f71e849f1c149b488` `.test-tmp` `windows_primary` `inspect` `permission_denied` -> `record_only` actions `verify_absent, write_status_artifact` +- `workspace-hygiene-policy-4582db63a0bb51ede7108d29` `.test-tmp` `windows_primary` `inspect` `directory_not_empty` -> `record_only` actions `verify_absent, write_status_artifact` +- `workspace-hygiene-policy-fb0ee31aef29fc1e827f9a6a` `.test-tmp` `windows_primary` `inspect` `file_locked` -> `record_only` actions `verify_absent, write_status_artifact` +- `workspace-hygiene-policy-4aa82262a3f3e58f587663a6` `.test-tmp` `windows_primary` `inspect` `unsafe_path` -> `block_unsafe` actions `block_before_write, write_status_artifact` +- `workspace-hygiene-policy-4c516245ec963722a3dc7ee8` `.test-tmp` `windows_primary` `inspect` `central_write_denied` -> `record_only` actions `verify_absent, write_status_artifact` +- `workspace-hygiene-policy-dabc8c8df47232d77d5e1541` `.test-tmp` `windows_primary` `inspect` `unknown` -> `record_only` actions `verify_absent, write_status_artifact` +- `workspace-hygiene-policy-a0a5fba1d3767fe3c2d63f33` `.test-tmp` `windows_primary` `apply` `none` -> `pass` actions `verify_absent` +- `workspace-hygiene-policy-3e31009425a0230ecef0ccd8` `.test-tmp` `windows_primary` `apply` `not_found` -> `pass` actions `verify_absent` +- `workspace-hygiene-policy-c23bb01b6d9294f0ebfdd9fc` `.test-tmp` `windows_primary` `apply` `permission_denied` -> `owner_action_required` actions `best_effort_delete, continue_after_child_error, escalate_owner, record_acl_exception` +- `workspace-hygiene-policy-7cce0df320947bdf44a99a25` `.test-tmp` `windows_primary` `apply` `directory_not_empty` -> `retain_with_evidence` actions `best_effort_delete, continue_after_child_error, write_status_artifact` +- `workspace-hygiene-policy-7d3c3344e63eb8e867ee5bfe` `.test-tmp` `windows_primary` `apply` `file_locked` -> `owner_action_required` actions `best_effort_delete, continue_after_child_error, escalate_owner, record_acl_exception` +- `workspace-hygiene-policy-f3675147f70d13633cb09512` `.test-tmp` `windows_primary` `apply` `unsafe_path` -> `block_unsafe` actions `block_before_write, write_status_artifact` +- `workspace-hygiene-policy-ac1bd6962d0b5a4526fdd10a` `.test-tmp` `windows_primary` `apply` `central_write_denied` -> `retain_with_evidence` actions `write_status_artifact, update_semantic_sql` +- `workspace-hygiene-policy-5aef47da6b565cd6dcabe957` `.test-tmp` `windows_primary` `apply` `unknown` -> `retain_with_evidence` actions `write_status_artifact` +- `workspace-hygiene-policy-f9d8c5f22f456ec593c6f211` `.test-tmp` `windows_primary` `closeout` `none` -> `pass` actions `verify_absent` +- `workspace-hygiene-policy-66c57ea342cf242a5393be0d` `.test-tmp` `windows_primary` `closeout` `not_found` -> `pass` actions `verify_absent` +- `workspace-hygiene-policy-32e3856c59c82f31b106ac99` `.test-tmp` `windows_primary` `closeout` `permission_denied` -> `owner_action_required` actions `best_effort_delete, continue_after_child_error, escalate_owner, record_acl_exception` +- `workspace-hygiene-policy-b1638bc1c123df15e80227d2` `.test-tmp` `windows_primary` `closeout` `directory_not_empty` -> `retain_with_evidence` actions `best_effort_delete, continue_after_child_error, write_status_artifact` +- `workspace-hygiene-policy-45895efc199646bc41cdf9e0` `.test-tmp` `windows_primary` `closeout` `file_locked` -> `owner_action_required` actions `best_effort_delete, continue_after_child_error, escalate_owner, record_acl_exception` +- `workspace-hygiene-policy-7a53c08cceab0e41c3359ed8` `.test-tmp` `windows_primary` `closeout` `unsafe_path` -> `block_unsafe` actions `block_before_write, write_status_artifact` +- `workspace-hygiene-policy-46699cee9bdfd53b87e78c36` `.test-tmp` `windows_primary` `closeout` `central_write_denied` -> `retain_with_evidence` actions `write_status_artifact, update_semantic_sql` +- `workspace-hygiene-policy-36d8f0af32e85b3e0b279e05` `.test-tmp` `windows_primary` `closeout` `unknown` -> `retain_with_evidence` actions `write_status_artifact` +- `workspace-hygiene-policy-5a1b22bdcb58bbcc237f14ac` `.test-tmp` `windows_primary` `central_record` `none` -> `pass` actions `verify_absent` +- `workspace-hygiene-policy-0a88ddf3c1c8b14321813c32` `.test-tmp` `windows_primary` `central_record` `not_found` -> `pass` actions `verify_absent` +- `workspace-hygiene-policy-606b442e56149662192ac879` `.test-tmp` `windows_primary` `central_record` `permission_denied` -> `owner_action_required` actions `best_effort_delete, continue_after_child_error, escalate_owner, record_acl_exception` +- `workspace-hygiene-policy-89a9c0752f0b51866217bf84` `.test-tmp` `windows_primary` `central_record` `directory_not_empty` -> `retain_with_evidence` actions `best_effort_delete, continue_after_child_error, write_status_artifact` +- `workspace-hygiene-policy-1f3ffab2223eeaecbbdbed62` `.test-tmp` `windows_primary` `central_record` `file_locked` -> `owner_action_required` actions `best_effort_delete, continue_after_child_error, escalate_owner, record_acl_exception` +- `workspace-hygiene-policy-1c441a1661159cb6f7187ce1` `.test-tmp` `windows_primary` `central_record` `unsafe_path` -> `block_unsafe` actions `block_before_write, write_status_artifact` +- `workspace-hygiene-policy-aad100963e7d8379a24f2b57` `.test-tmp` `windows_primary` `central_record` `central_write_denied` -> `retain_with_evidence` actions `write_status_artifact, update_semantic_sql` +- `workspace-hygiene-policy-e3eb826734091137b31cc07b` `.test-tmp` `windows_primary` `central_record` `unknown` -> `retain_with_evidence` actions `write_status_artifact` +- `workspace-hygiene-policy-f8242138d8161a66bdd2d7cb` `.test-tmp` `windows_secondary` `inspect` `none` -> `record_only` actions `verify_absent, write_status_artifact` +- `workspace-hygiene-policy-8f0f0dfa2a0a0cd0be6b658e` `.test-tmp` `windows_secondary` `inspect` `not_found` -> `record_only` actions `verify_absent, write_status_artifact` +- `workspace-hygiene-policy-f9c3fc1327e3c1391868b696` `.test-tmp` `windows_secondary` `inspect` `permission_denied` -> `record_only` actions `verify_absent, write_status_artifact` +- `workspace-hygiene-policy-0baf6ba10316a0cfd87f80ad` `.test-tmp` `windows_secondary` `inspect` `directory_not_empty` -> `record_only` actions `verify_absent, write_status_artifact` +- `workspace-hygiene-policy-806a326c17d88486df9359d2` `.test-tmp` `windows_secondary` `inspect` `file_locked` -> `record_only` actions `verify_absent, write_status_artifact` +- `workspace-hygiene-policy-c992717a0c0a8d1f38b29b08` `.test-tmp` `windows_secondary` `inspect` `unsafe_path` -> `block_unsafe` actions `block_before_write, write_status_artifact` +- `workspace-hygiene-policy-53a6aee1dc74bbd57220d67e` `.test-tmp` `windows_secondary` `inspect` `central_write_denied` -> `record_only` actions `verify_absent, write_status_artifact` +- `workspace-hygiene-policy-9c152223f8242817a79971bc` `.test-tmp` `windows_secondary` `inspect` `unknown` -> `record_only` actions `verify_absent, write_status_artifact` +- `workspace-hygiene-policy-87c3f9c9b4e74cbc737cbda2` `.test-tmp` `windows_secondary` `apply` `none` -> `pass` actions `verify_absent` +- `workspace-hygiene-policy-206da35bc71c92f44cfee34f` `.test-tmp` `windows_secondary` `apply` `not_found` -> `pass` actions `verify_absent` +- `workspace-hygiene-policy-51957806f136b8a3e39c1b58` `.test-tmp` `windows_secondary` `apply` `permission_denied` -> `owner_action_required` actions `best_effort_delete, continue_after_child_error, escalate_owner, record_acl_exception` +- `workspace-hygiene-policy-0ff808e4688a92886ff70527` `.test-tmp` `windows_secondary` `apply` `directory_not_empty` -> `retain_with_evidence` actions `best_effort_delete, continue_after_child_error, write_status_artifact` +- `workspace-hygiene-policy-d0ad8569490cf7d3fbf0fa6c` `.test-tmp` `windows_secondary` `apply` `file_locked` -> `owner_action_required` actions `best_effort_delete, continue_after_child_error, escalate_owner, record_acl_exception` +- `workspace-hygiene-policy-9cc8d387da8cc335efd68e3a` `.test-tmp` `windows_secondary` `apply` `unsafe_path` -> `block_unsafe` actions `block_before_write, write_status_artifact` +- `workspace-hygiene-policy-769cb1efd5f31fa84616585f` `.test-tmp` `windows_secondary` `apply` `central_write_denied` -> `retain_with_evidence` actions `write_status_artifact, update_semantic_sql` +- `workspace-hygiene-policy-bf728d1d9afc76b2627a662a` `.test-tmp` `windows_secondary` `apply` `unknown` -> `retain_with_evidence` actions `write_status_artifact` +- `workspace-hygiene-policy-049c398e0663b27fb5609985` `.test-tmp` `windows_secondary` `closeout` `none` -> `pass` actions `verify_absent` +- `workspace-hygiene-policy-0ff76ce14fffe9fe665251e1` `.test-tmp` `windows_secondary` `closeout` `not_found` -> `pass` actions `verify_absent` +- `workspace-hygiene-policy-1451df7001a804cc3ee552dc` `.test-tmp` `windows_secondary` `closeout` `permission_denied` -> `owner_action_required` actions `best_effort_delete, continue_after_child_error, escalate_owner, record_acl_exception` +- `workspace-hygiene-policy-2cc605680ae873c818865b33` `.test-tmp` `windows_secondary` `closeout` `directory_not_empty` -> `retain_with_evidence` actions `best_effort_delete, continue_after_child_error, write_status_artifact` +- `workspace-hygiene-policy-cb226b7380849e26aa4d76c7` `.test-tmp` `windows_secondary` `closeout` `file_locked` -> `owner_action_required` actions `best_effort_delete, continue_after_child_error, escalate_owner, record_acl_exception` +- `workspace-hygiene-policy-63a68ccc0d018e2fe1546090` `.test-tmp` `windows_secondary` `closeout` `unsafe_path` -> `block_unsafe` actions `block_before_write, write_status_artifact` +- `workspace-hygiene-policy-20906dab1c11fbb4cebf2b62` `.test-tmp` `windows_secondary` `closeout` `central_write_denied` -> `retain_with_evidence` actions `write_status_artifact, update_semantic_sql` +- `workspace-hygiene-policy-2221a710356ed9e7607ef7f3` `.test-tmp` `windows_secondary` `closeout` `unknown` -> `retain_with_evidence` actions `write_status_artifact` +- `workspace-hygiene-policy-714c981b7e3ac0583c2a9b9f` `.test-tmp` `windows_secondary` `central_record` `none` -> `pass` actions `verify_absent` +- `workspace-hygiene-policy-c99a74dc347c76b2b57bb2e1` `.test-tmp` `windows_secondary` `central_record` `not_found` -> `pass` actions `verify_absent` +- `workspace-hygiene-policy-eb582edade7af46be10eea64` `.test-tmp` `windows_secondary` `central_record` `permission_denied` -> `owner_action_required` actions `best_effort_delete, continue_after_child_error, escalate_owner, record_acl_exception` +- `workspace-hygiene-policy-2acae1058db81e26fe74bf74` `.test-tmp` `windows_secondary` `central_record` `directory_not_empty` -> `retain_with_evidence` actions `best_effort_delete, continue_after_child_error, write_status_artifact` +- `workspace-hygiene-policy-00a57f8e2a5229b50f48463f` `.test-tmp` `windows_secondary` `central_record` `file_locked` -> `owner_action_required` actions `best_effort_delete, continue_after_child_error, escalate_owner, record_acl_exception` +- `workspace-hygiene-policy-2d76fae86d19d0550d374952` `.test-tmp` `windows_secondary` `central_record` `unsafe_path` -> `block_unsafe` actions `block_before_write, write_status_artifact` +- `workspace-hygiene-policy-20ab0f83d53c3cd4c8a67f08` `.test-tmp` `windows_secondary` `central_record` `central_write_denied` -> `retain_with_evidence` actions `write_status_artifact, update_semantic_sql` +- `workspace-hygiene-policy-83f282f1d7fe2cca0bd27934` `.test-tmp` `windows_secondary` `central_record` `unknown` -> `retain_with_evidence` actions `write_status_artifact` +- `workspace-hygiene-policy-90f58c90392bba2d16c0dbd8` `.test-tmp` `codex_server` `inspect` `none` -> `record_only` actions `verify_absent, write_status_artifact` +- `workspace-hygiene-policy-7694790458af6a1d5b93d85b` `.test-tmp` `codex_server` `inspect` `not_found` -> `record_only` actions `verify_absent, write_status_artifact` +- `workspace-hygiene-policy-e830494add59daf1410a11a6` `.test-tmp` `codex_server` `inspect` `permission_denied` -> `record_only` actions `verify_absent, write_status_artifact` +- `workspace-hygiene-policy-b120f9fd5fa901c522ef7d14` `.test-tmp` `codex_server` `inspect` `directory_not_empty` -> `record_only` actions `verify_absent, write_status_artifact` +- `workspace-hygiene-policy-ebe8bd703ba081cef5c7d379` `.test-tmp` `codex_server` `inspect` `file_locked` -> `record_only` actions `verify_absent, write_status_artifact` +- `workspace-hygiene-policy-7fe73882bbf81c6c267106d0` `.test-tmp` `codex_server` `inspect` `unsafe_path` -> `block_unsafe` actions `block_before_write, write_status_artifact` +- `workspace-hygiene-policy-b65b014821b311f4c5991681` `.test-tmp` `codex_server` `inspect` `central_write_denied` -> `record_only` actions `verify_absent, write_status_artifact` +- `workspace-hygiene-policy-8049cd78fdda5b4b748f5074` `.test-tmp` `codex_server` `inspect` `unknown` -> `record_only` actions `verify_absent, write_status_artifact` +- `workspace-hygiene-policy-584d53c3180c3596cb9021f0` `.test-tmp` `codex_server` `apply` `none` -> `pass` actions `verify_absent` +- `workspace-hygiene-policy-ab6e1d396d8421f67657dcf1` `.test-tmp` `codex_server` `apply` `not_found` -> `pass` actions `verify_absent` +- `workspace-hygiene-policy-af6f8916bf733c4a553d50e3` `.test-tmp` `codex_server` `apply` `permission_denied` -> `owner_action_required` actions `best_effort_delete, continue_after_child_error, escalate_owner, record_acl_exception` +- `workspace-hygiene-policy-3b75f906ae19b7cac43af2f6` `.test-tmp` `codex_server` `apply` `directory_not_empty` -> `retain_with_evidence` actions `best_effort_delete, continue_after_child_error, write_status_artifact` +- `workspace-hygiene-policy-6372da5f33fc0af7df08e000` `.test-tmp` `codex_server` `apply` `file_locked` -> `owner_action_required` actions `best_effort_delete, continue_after_child_error, escalate_owner, record_acl_exception` +- `workspace-hygiene-policy-d95aca64f3bee2b9921624be` `.test-tmp` `codex_server` `apply` `unsafe_path` -> `block_unsafe` actions `block_before_write, write_status_artifact` +- `workspace-hygiene-policy-d71b3e6ba8346080dd3288e2` `.test-tmp` `codex_server` `apply` `central_write_denied` -> `retain_with_evidence` actions `write_status_artifact, update_semantic_sql` +- `workspace-hygiene-policy-0bcdd168427902e850455395` `.test-tmp` `codex_server` `apply` `unknown` -> `retain_with_evidence` actions `write_status_artifact` + +## Regra operacional + +- Remover somente artefatos locais aprovados. +- Continuar a limpeza depois de erro de filho quando o caminho ainda estiver dentro do projeto. +- Registrar WinError 5, arquivo em uso ou pasta nao vazia como pendencia de owner quando persistirem. +- Nao apagar paths fora do project_root. diff --git a/ecossistema/WORKSPACE-HYGIENE-REPORT.md b/ecossistema/WORKSPACE-HYGIENE-REPORT.md index 3d7c10e..ade5631 100644 --- a/ecossistema/WORKSPACE-HYGIENE-REPORT.md +++ b/ecossistema/WORKSPACE-HYGIENE-REPORT.md @@ -1,7 +1,7 @@ # Workspace Hygiene Report -- report_id: `workspace-hygiene-389155382838` -- generated_at: `2026-05-02T09:27:04+00:00` +- report_id: `workspace-hygiene-441283210879` +- generated_at: `2026-05-02T10:25:29+00:00` - project_root: `G:\_codex-git\tudo-para-ia-mais-humana` - central_platform_folder: `G:\_codex-git\nucleo-gestao-operacional\central-de-ordem-de-servico\projects\15_repo_tudo-para-ia-mais-humana-platform` - status: `blocked` @@ -27,10 +27,10 @@ - applied: `True` - deleted: `False` - exists_after: `True` -- children_before: `3052` -- bytes_before: `68130347` +- children_before: `1186` +- bytes_before: `10279` - note: artifact retained by ACL or filesystem lock -- error: `PermissionError: [WinError 5] Acesso negado: 'G:\\_codex-git\\tudo-para-ia-mais-humana\\.test-tmp\\tmpnk6r4sdb'` +- error: `PermissionError: [WinError 5] Acesso negado: 'G:\\_codex-git\\tudo-para-ia-mais-humana\\.test-tmp\\tmpnk6r4sdb'; PermissionError: [WinError 5] Acesso negado: 'G:\\_codex-git\\tudo-para-ia-mais-humana\\.test-tmp\\tmpu13bzfhr'; OSError: [WinError 145] A pasta não está vazia: 'G:\\_codex-git\\tudo-para-ia-mais-humana\\.test-tmp'` - footprint_errors: - `PermissionError: [WinError 5] Acesso negado: 'G:\\_codex-git\\tudo-para-ia-mais-humana\\.test-tmp\\tmpnk6r4sdb'` - `PermissionError: [WinError 5] Acesso negado: 'G:\\_codex-git\\tudo-para-ia-mais-humana\\.test-tmp\\tmpu13bzfhr'` @@ -49,4 +49,4 @@ ## Blockers -- `python-test-temp:PermissionError: [WinError 5] Acesso negado: 'G:\\_codex-git\\tudo-para-ia-mais-humana\\.test-tmp\\tmpnk6r4sdb'` +- `python-test-temp:PermissionError: [WinError 5] Acesso negado: 'G:\\_codex-git\\tudo-para-ia-mais-humana\\.test-tmp\\tmpnk6r4sdb'; PermissionError: [WinError 5] Acesso negado: 'G:\\_codex-git\\tudo-para-ia-mais-humana\\.test-tmp\\tmpu13bzfhr'; OSError: [WinError 145] A pasta não está vazia: 'G:\\_codex-git\\tudo-para-ia-mais-humana\\.test-tmp'` diff --git a/matrizes/workspace-hygiene-policy-cases.csv b/matrizes/workspace-hygiene-policy-cases.csv new file mode 100644 index 0000000..491a739 --- /dev/null +++ b/matrizes/workspace-hygiene-policy-cases.csv @@ -0,0 +1,1537 @@ +case_id,artifact_kind,relative_path,environment,execution_mode,error_kind,status,remediation_actions,direct_delete_allowed,reason,next_action +workspace-hygiene-policy-5d2027200080cdc46bb65f26,python_test_temp,.test-tmp,windows_primary,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-228473216bb503bc783a215c,python_test_temp,.test-tmp,windows_primary,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-cb761d2f71e849f1c149b488,python_test_temp,.test-tmp,windows_primary,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-4582db63a0bb51ede7108d29,python_test_temp,.test-tmp,windows_primary,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-fb0ee31aef29fc1e827f9a6a,python_test_temp,.test-tmp,windows_primary,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-4aa82262a3f3e58f587663a6,python_test_temp,.test-tmp,windows_primary,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-4c516245ec963722a3dc7ee8,python_test_temp,.test-tmp,windows_primary,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-dabc8c8df47232d77d5e1541,python_test_temp,.test-tmp,windows_primary,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-a0a5fba1d3767fe3c2d63f33,python_test_temp,.test-tmp,windows_primary,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-3e31009425a0230ecef0ccd8,python_test_temp,.test-tmp,windows_primary,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-c23bb01b6d9294f0ebfdd9fc,python_test_temp,.test-tmp,windows_primary,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-7cce0df320947bdf44a99a25,python_test_temp,.test-tmp,windows_primary,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-7d3c3344e63eb8e867ee5bfe,python_test_temp,.test-tmp,windows_primary,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-f3675147f70d13633cb09512,python_test_temp,.test-tmp,windows_primary,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-ac1bd6962d0b5a4526fdd10a,python_test_temp,.test-tmp,windows_primary,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-5aef47da6b565cd6dcabe957,python_test_temp,.test-tmp,windows_primary,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-f9d8c5f22f456ec593c6f211,python_test_temp,.test-tmp,windows_primary,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-66c57ea342cf242a5393be0d,python_test_temp,.test-tmp,windows_primary,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-32e3856c59c82f31b106ac99,python_test_temp,.test-tmp,windows_primary,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-b1638bc1c123df15e80227d2,python_test_temp,.test-tmp,windows_primary,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-45895efc199646bc41cdf9e0,python_test_temp,.test-tmp,windows_primary,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-7a53c08cceab0e41c3359ed8,python_test_temp,.test-tmp,windows_primary,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-46699cee9bdfd53b87e78c36,python_test_temp,.test-tmp,windows_primary,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-36d8f0af32e85b3e0b279e05,python_test_temp,.test-tmp,windows_primary,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-5a1b22bdcb58bbcc237f14ac,python_test_temp,.test-tmp,windows_primary,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-0a88ddf3c1c8b14321813c32,python_test_temp,.test-tmp,windows_primary,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-606b442e56149662192ac879,python_test_temp,.test-tmp,windows_primary,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-89a9c0752f0b51866217bf84,python_test_temp,.test-tmp,windows_primary,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-1f3ffab2223eeaecbbdbed62,python_test_temp,.test-tmp,windows_primary,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-1c441a1661159cb6f7187ce1,python_test_temp,.test-tmp,windows_primary,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-aad100963e7d8379a24f2b57,python_test_temp,.test-tmp,windows_primary,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-e3eb826734091137b31cc07b,python_test_temp,.test-tmp,windows_primary,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-f8242138d8161a66bdd2d7cb,python_test_temp,.test-tmp,windows_secondary,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-8f0f0dfa2a0a0cd0be6b658e,python_test_temp,.test-tmp,windows_secondary,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-f9c3fc1327e3c1391868b696,python_test_temp,.test-tmp,windows_secondary,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-0baf6ba10316a0cfd87f80ad,python_test_temp,.test-tmp,windows_secondary,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-806a326c17d88486df9359d2,python_test_temp,.test-tmp,windows_secondary,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-c992717a0c0a8d1f38b29b08,python_test_temp,.test-tmp,windows_secondary,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-53a6aee1dc74bbd57220d67e,python_test_temp,.test-tmp,windows_secondary,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-9c152223f8242817a79971bc,python_test_temp,.test-tmp,windows_secondary,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-87c3f9c9b4e74cbc737cbda2,python_test_temp,.test-tmp,windows_secondary,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-206da35bc71c92f44cfee34f,python_test_temp,.test-tmp,windows_secondary,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-51957806f136b8a3e39c1b58,python_test_temp,.test-tmp,windows_secondary,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-0ff808e4688a92886ff70527,python_test_temp,.test-tmp,windows_secondary,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-d0ad8569490cf7d3fbf0fa6c,python_test_temp,.test-tmp,windows_secondary,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-9cc8d387da8cc335efd68e3a,python_test_temp,.test-tmp,windows_secondary,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-769cb1efd5f31fa84616585f,python_test_temp,.test-tmp,windows_secondary,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-bf728d1d9afc76b2627a662a,python_test_temp,.test-tmp,windows_secondary,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-049c398e0663b27fb5609985,python_test_temp,.test-tmp,windows_secondary,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-0ff76ce14fffe9fe665251e1,python_test_temp,.test-tmp,windows_secondary,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-1451df7001a804cc3ee552dc,python_test_temp,.test-tmp,windows_secondary,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-2cc605680ae873c818865b33,python_test_temp,.test-tmp,windows_secondary,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-cb226b7380849e26aa4d76c7,python_test_temp,.test-tmp,windows_secondary,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-63a68ccc0d018e2fe1546090,python_test_temp,.test-tmp,windows_secondary,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-20906dab1c11fbb4cebf2b62,python_test_temp,.test-tmp,windows_secondary,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-2221a710356ed9e7607ef7f3,python_test_temp,.test-tmp,windows_secondary,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-714c981b7e3ac0583c2a9b9f,python_test_temp,.test-tmp,windows_secondary,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-c99a74dc347c76b2b57bb2e1,python_test_temp,.test-tmp,windows_secondary,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-eb582edade7af46be10eea64,python_test_temp,.test-tmp,windows_secondary,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-2acae1058db81e26fe74bf74,python_test_temp,.test-tmp,windows_secondary,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-00a57f8e2a5229b50f48463f,python_test_temp,.test-tmp,windows_secondary,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-2d76fae86d19d0550d374952,python_test_temp,.test-tmp,windows_secondary,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-20ab0f83d53c3cd4c8a67f08,python_test_temp,.test-tmp,windows_secondary,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-83f282f1d7fe2cca0bd27934,python_test_temp,.test-tmp,windows_secondary,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-90f58c90392bba2d16c0dbd8,python_test_temp,.test-tmp,codex_server,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-7694790458af6a1d5b93d85b,python_test_temp,.test-tmp,codex_server,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-e830494add59daf1410a11a6,python_test_temp,.test-tmp,codex_server,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-b120f9fd5fa901c522ef7d14,python_test_temp,.test-tmp,codex_server,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-ebe8bd703ba081cef5c7d379,python_test_temp,.test-tmp,codex_server,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-7fe73882bbf81c6c267106d0,python_test_temp,.test-tmp,codex_server,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-b65b014821b311f4c5991681,python_test_temp,.test-tmp,codex_server,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-8049cd78fdda5b4b748f5074,python_test_temp,.test-tmp,codex_server,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-584d53c3180c3596cb9021f0,python_test_temp,.test-tmp,codex_server,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-ab6e1d396d8421f67657dcf1,python_test_temp,.test-tmp,codex_server,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-af6f8916bf733c4a553d50e3,python_test_temp,.test-tmp,codex_server,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-3b75f906ae19b7cac43af2f6,python_test_temp,.test-tmp,codex_server,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-6372da5f33fc0af7df08e000,python_test_temp,.test-tmp,codex_server,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-d95aca64f3bee2b9921624be,python_test_temp,.test-tmp,codex_server,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-d71b3e6ba8346080dd3288e2,python_test_temp,.test-tmp,codex_server,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-0bcdd168427902e850455395,python_test_temp,.test-tmp,codex_server,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-cc007fc291a3b69cd7ea24c0,python_test_temp,.test-tmp,codex_server,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-28d6a774f54ee1922b1f46a2,python_test_temp,.test-tmp,codex_server,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-7f8126d5be90d3ed452a4b46,python_test_temp,.test-tmp,codex_server,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-e3afeb4071ffdc5c8ca275cb,python_test_temp,.test-tmp,codex_server,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-378670f0c0da94b76e41337f,python_test_temp,.test-tmp,codex_server,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-2c08995b13ab2b04bb3b6ffe,python_test_temp,.test-tmp,codex_server,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-9485cd580b4d0af0a7a973af,python_test_temp,.test-tmp,codex_server,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-cbc55dafff001c0562f0bef3,python_test_temp,.test-tmp,codex_server,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-22763dfd22f3427e4be37b5e,python_test_temp,.test-tmp,codex_server,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-8a0be41aadd8f750a42b87a5,python_test_temp,.test-tmp,codex_server,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-76fe8963137008f415c43ac2,python_test_temp,.test-tmp,codex_server,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-c8c91cbc66392434a5d8d69c,python_test_temp,.test-tmp,codex_server,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-0eabe7f254bd4d2b07edc4df,python_test_temp,.test-tmp,codex_server,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-5518aa68e537145ebd300456,python_test_temp,.test-tmp,codex_server,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-8477ded0dcdcee9a35b00aed,python_test_temp,.test-tmp,codex_server,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-6e5b815392f6834673d31925,python_test_temp,.test-tmp,codex_server,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-5ffa6841c55ac7d2dde25101,python_test_temp,.test-tmp,gitlab_server,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-a65ecf1d26472ac2f80708da,python_test_temp,.test-tmp,gitlab_server,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-a1f11a28529a69f3e95833e9,python_test_temp,.test-tmp,gitlab_server,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-99abbd5a1eb0e7929af417f6,python_test_temp,.test-tmp,gitlab_server,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-f4ad0bb16153300f1a25a901,python_test_temp,.test-tmp,gitlab_server,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-80f4339eb402aa6cec167cd5,python_test_temp,.test-tmp,gitlab_server,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-a5c6c14c3479502f1f9d7f4d,python_test_temp,.test-tmp,gitlab_server,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-fa4fd8681fafee7c8f18af8c,python_test_temp,.test-tmp,gitlab_server,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-6b1c1d1c9dfaf94b8efed10b,python_test_temp,.test-tmp,gitlab_server,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-5b6db81da438edf0601a1182,python_test_temp,.test-tmp,gitlab_server,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-33e1a31f6fc267e31bb4253d,python_test_temp,.test-tmp,gitlab_server,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-c75fb638d286f8afaed9d2ba,python_test_temp,.test-tmp,gitlab_server,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-748fbcdc57ec12fd1ce44e70,python_test_temp,.test-tmp,gitlab_server,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-f7a758fe801cc5b4743ec151,python_test_temp,.test-tmp,gitlab_server,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-afcdf7d73b4fe7cf4adea34f,python_test_temp,.test-tmp,gitlab_server,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-4a9ee36e754c0302cddb200d,python_test_temp,.test-tmp,gitlab_server,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-bc68bf7997276f2f14083341,python_test_temp,.test-tmp,gitlab_server,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-343d4f8a2717542a5c14959f,python_test_temp,.test-tmp,gitlab_server,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-d14074d435161e2497fad6da,python_test_temp,.test-tmp,gitlab_server,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-2f10d6b61b7059a68dfbbe07,python_test_temp,.test-tmp,gitlab_server,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-ad53abfd7c68c1effeb5f810,python_test_temp,.test-tmp,gitlab_server,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-baabf5ef53d72a19ed7c2a59,python_test_temp,.test-tmp,gitlab_server,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-6604445f7678fbb9a4156277,python_test_temp,.test-tmp,gitlab_server,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-2590b640d600bc0d63323930,python_test_temp,.test-tmp,gitlab_server,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-51804e769de8309aaefad244,python_test_temp,.test-tmp,gitlab_server,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-535f4c2d93d5e413d8362dc8,python_test_temp,.test-tmp,gitlab_server,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-cf5b961e74036f38575a686f,python_test_temp,.test-tmp,gitlab_server,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-8cf2fe40310412db84d5416e,python_test_temp,.test-tmp,gitlab_server,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-5be9c9d727f2bc8a211226e5,python_test_temp,.test-tmp,gitlab_server,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-43c3023c40e233b8afa72afc,python_test_temp,.test-tmp,gitlab_server,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-38c236c39f79265bcd40b8be,python_test_temp,.test-tmp,gitlab_server,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-0cffebeafee9a325002b604a,python_test_temp,.test-tmp,gitlab_server,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-d5151d41e08297b3206d1c33,node_dependencies,node_modules,windows_primary,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-7dae5783cb24fb8b763a0ac3,node_dependencies,node_modules,windows_primary,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-5cc4191363b70cf0aa7fb7ea,node_dependencies,node_modules,windows_primary,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-de16bb5fc3c83a3c2b3cdfe9,node_dependencies,node_modules,windows_primary,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-27b8e99b99322d1191afa957,node_dependencies,node_modules,windows_primary,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-36479d34daa393d20b712434,node_dependencies,node_modules,windows_primary,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-a6a83313cdc67b593f288949,node_dependencies,node_modules,windows_primary,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-c503d997fb7f21f84e21ea2b,node_dependencies,node_modules,windows_primary,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-4de06bcc5dfa617a67a7fc97,node_dependencies,node_modules,windows_primary,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-d70bb38fcfedcba6216cb4b3,node_dependencies,node_modules,windows_primary,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-c8303b89af9eee76b80550de,node_dependencies,node_modules,windows_primary,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-4c91044db071ec4545422075,node_dependencies,node_modules,windows_primary,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-0272f8771437a7740f2f9136,node_dependencies,node_modules,windows_primary,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-21c823e66f985d3f8c4b9170,node_dependencies,node_modules,windows_primary,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-ad7a6d36e185c59b0f51e492,node_dependencies,node_modules,windows_primary,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-c4079fd105c06188b7648390,node_dependencies,node_modules,windows_primary,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-89fea55e0f2e7eed2dc6aed9,node_dependencies,node_modules,windows_primary,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-11c6ae63b34d64d976737fd0,node_dependencies,node_modules,windows_primary,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-9e3adb794c568779110e8dbc,node_dependencies,node_modules,windows_primary,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-c98c7afd64d1bb2218ee70d5,node_dependencies,node_modules,windows_primary,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-24c958306c95534dbde3b460,node_dependencies,node_modules,windows_primary,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-839c53699769f17a64eaaa76,node_dependencies,node_modules,windows_primary,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-a655fea48365788022c7e790,node_dependencies,node_modules,windows_primary,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-2a5210ea72bd8bb5648c4211,node_dependencies,node_modules,windows_primary,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-e6a260203c0b6d8b214c146e,node_dependencies,node_modules,windows_primary,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-a2289586018365af90cf2177,node_dependencies,node_modules,windows_primary,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-f373ab409a5d865c4616b846,node_dependencies,node_modules,windows_primary,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-59be3a1386fd516a466bd267,node_dependencies,node_modules,windows_primary,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-f10f55b6afd52c1a022b8b08,node_dependencies,node_modules,windows_primary,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-5be8f3602b299290f9a51e10,node_dependencies,node_modules,windows_primary,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-fbfadb1b540661acbbc7f29c,node_dependencies,node_modules,windows_primary,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-86fc556b8cde5f6021ca750e,node_dependencies,node_modules,windows_primary,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-cc6d14914d6e8063ac99a0b7,node_dependencies,node_modules,windows_secondary,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-4453a8c5c2c07323aa5b8433,node_dependencies,node_modules,windows_secondary,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-db3676c637fad60cb729a137,node_dependencies,node_modules,windows_secondary,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-fcdbad0b442f7cb30667b8d2,node_dependencies,node_modules,windows_secondary,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-f3a2ee8debf4a752e3f7aba3,node_dependencies,node_modules,windows_secondary,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-64be6090cbc184ff205ceda4,node_dependencies,node_modules,windows_secondary,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-18a8c673829bc7fe959cc9f2,node_dependencies,node_modules,windows_secondary,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-567cd51ded3c5a61c54c0e52,node_dependencies,node_modules,windows_secondary,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-9747e5ee8a7f4c8420f250f4,node_dependencies,node_modules,windows_secondary,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-63be7c10d07e7e3b9b8ec524,node_dependencies,node_modules,windows_secondary,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-a91d6cec8f283efbb8088f8b,node_dependencies,node_modules,windows_secondary,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-32100aeb263695f65581202b,node_dependencies,node_modules,windows_secondary,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-98b49e41f3ff55563ba7c023,node_dependencies,node_modules,windows_secondary,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-999077317eebe3407d92a6fb,node_dependencies,node_modules,windows_secondary,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-dc79d65253f1664259d654e0,node_dependencies,node_modules,windows_secondary,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-2b174197601e9fcda1643b80,node_dependencies,node_modules,windows_secondary,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-505819b6bac2af0ef680c9f5,node_dependencies,node_modules,windows_secondary,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-63add102632c6772a95c02fa,node_dependencies,node_modules,windows_secondary,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-bb59065b949c11b45e6a580a,node_dependencies,node_modules,windows_secondary,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-19a2af39018f3b8970927eb5,node_dependencies,node_modules,windows_secondary,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-7a45282637b98208c31aef47,node_dependencies,node_modules,windows_secondary,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-eccbc424c8e7705783fde281,node_dependencies,node_modules,windows_secondary,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-57eb914acae6b910b4c84cdc,node_dependencies,node_modules,windows_secondary,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-555973771c0bc08cfb4a0fef,node_dependencies,node_modules,windows_secondary,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-3dd4599c9806fe8be6bbd927,node_dependencies,node_modules,windows_secondary,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-d20f4e039a297158b62676cb,node_dependencies,node_modules,windows_secondary,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-4d5380dfc0907937e673dd52,node_dependencies,node_modules,windows_secondary,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-5032234247d35a4c7757f7bd,node_dependencies,node_modules,windows_secondary,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-48efcdcb32b4b48e8f1cd2be,node_dependencies,node_modules,windows_secondary,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-20524468b77bd98b50f26569,node_dependencies,node_modules,windows_secondary,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-3580795242db48c0e0fbd16c,node_dependencies,node_modules,windows_secondary,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-562907e967dd95be32bb5d2d,node_dependencies,node_modules,windows_secondary,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-eaee1f5db69108f325083d06,node_dependencies,node_modules,codex_server,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-1a73569c43b80f04b10c1806,node_dependencies,node_modules,codex_server,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-9470b7e75d76cdd7664accf1,node_dependencies,node_modules,codex_server,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-1c1935bafdb0bbcf3af59f8a,node_dependencies,node_modules,codex_server,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-19d0b505d2be66c8c3c1261a,node_dependencies,node_modules,codex_server,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-6d9ead6ac95863815381be82,node_dependencies,node_modules,codex_server,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-fc4a471a83c4ba8b80b1c175,node_dependencies,node_modules,codex_server,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-19b3dfb085823db759d51c14,node_dependencies,node_modules,codex_server,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-f974c5ff10dc5a9315e0939d,node_dependencies,node_modules,codex_server,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-354596a04060116206f1fe3c,node_dependencies,node_modules,codex_server,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-759ee40319a64e2057d65e51,node_dependencies,node_modules,codex_server,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-b0cb7c6d066160feb379f756,node_dependencies,node_modules,codex_server,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-41813ddc789b80077866c17b,node_dependencies,node_modules,codex_server,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-1b04436005d7bf9f34805673,node_dependencies,node_modules,codex_server,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-6900bf8d9ab763a54e7d8df2,node_dependencies,node_modules,codex_server,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-fefb2255b4bf807af3be61b9,node_dependencies,node_modules,codex_server,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-6d442880ee6477971a4bf367,node_dependencies,node_modules,codex_server,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-eab3ce1289834e71c1658575,node_dependencies,node_modules,codex_server,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-9f31830c30a755c0b34411fc,node_dependencies,node_modules,codex_server,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-604b4ff330e6f570728dadbf,node_dependencies,node_modules,codex_server,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-bfd585c5965eee37d19ac317,node_dependencies,node_modules,codex_server,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-c63bef4b35db5567c8e912dc,node_dependencies,node_modules,codex_server,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-373b03df32ae6ecaf7ff4724,node_dependencies,node_modules,codex_server,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-934dd371549ac59f94ea2192,node_dependencies,node_modules,codex_server,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-8b3b9a808390d882409d7f53,node_dependencies,node_modules,codex_server,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-038a6e252cd8858d9bec5f8d,node_dependencies,node_modules,codex_server,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-be9dc8369ea8b856c450fe9e,node_dependencies,node_modules,codex_server,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-b8cc4b4129a39e26d12dd54c,node_dependencies,node_modules,codex_server,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-7e0e3d5079c53156842bf0e1,node_dependencies,node_modules,codex_server,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-2c8d1eae0a8f7d1e57ccf446,node_dependencies,node_modules,codex_server,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-381f971c9613a3dae7a36bb6,node_dependencies,node_modules,codex_server,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-4878c0ed50eb96527dc4afa4,node_dependencies,node_modules,codex_server,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-ad377780f8fc390affdef8a5,node_dependencies,node_modules,gitlab_server,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-7738aac3e5c448c63fd48152,node_dependencies,node_modules,gitlab_server,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-b68f576c9a1033abe49338e5,node_dependencies,node_modules,gitlab_server,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-971a13cd29ba63318707f3e7,node_dependencies,node_modules,gitlab_server,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-32e5a9b04d6858d70b6f5809,node_dependencies,node_modules,gitlab_server,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-b74bda62bb1a4da193374461,node_dependencies,node_modules,gitlab_server,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-0da64e82d58b4800f99a689e,node_dependencies,node_modules,gitlab_server,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-4ae87c435dc539f5d7cd5a95,node_dependencies,node_modules,gitlab_server,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-8678b5f6d02c401fee1e6e52,node_dependencies,node_modules,gitlab_server,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-6ec0aaf9bf419a815013e9fe,node_dependencies,node_modules,gitlab_server,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-648e6c1b71ca9f2ff404b7b9,node_dependencies,node_modules,gitlab_server,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-e1c9d93be85de4f03baff996,node_dependencies,node_modules,gitlab_server,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-129900b06af6dbe442ec350e,node_dependencies,node_modules,gitlab_server,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-07a1403e34982a2088469c90,node_dependencies,node_modules,gitlab_server,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-ea1b878b7661a461972ae61c,node_dependencies,node_modules,gitlab_server,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-5986137629e6833590dcb98d,node_dependencies,node_modules,gitlab_server,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-3a8d2ba7818314ee9e9c869e,node_dependencies,node_modules,gitlab_server,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-9c0ea52f113b7d4d578f676c,node_dependencies,node_modules,gitlab_server,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-80e1b19cbfe5a1145d9b9ab4,node_dependencies,node_modules,gitlab_server,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-9631fd7798b5f14dcbbaf8df,node_dependencies,node_modules,gitlab_server,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-f06af3ba3aad5c8e2c2c481f,node_dependencies,node_modules,gitlab_server,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-15922e31356158667f609871,node_dependencies,node_modules,gitlab_server,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-3570a8a0186ae89d0e5b0a09,node_dependencies,node_modules,gitlab_server,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-41609a72da5364467e659ac8,node_dependencies,node_modules,gitlab_server,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-306c53ddde98893dd035b854,node_dependencies,node_modules,gitlab_server,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-975c7f10776da1853fc17531,node_dependencies,node_modules,gitlab_server,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-4fd0e883783a46f47c9246a3,node_dependencies,node_modules,gitlab_server,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-2d9ff771b3062a224e059e3d,node_dependencies,node_modules,gitlab_server,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-35e9b4e7e9fa5d1449773e78,node_dependencies,node_modules,gitlab_server,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-79cac4cf5cb77b265ade0aea,node_dependencies,node_modules,gitlab_server,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-3bc65f0249495ee14b7066d7,node_dependencies,node_modules,gitlab_server,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-f19a9bbbc9f91acf3d11f6f3,node_dependencies,node_modules,gitlab_server,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-cfc8f557d32ce07f78d4560a,python_cache,__pycache__,windows_primary,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-459852494df7dd3c39fbf5d0,python_cache,__pycache__,windows_primary,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-2083cf36ed9e1cfd0cce53dd,python_cache,__pycache__,windows_primary,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-de4f782c0fd12ef861c86eb1,python_cache,__pycache__,windows_primary,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-83ff0921b69eb2960ef11a49,python_cache,__pycache__,windows_primary,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-bd0e42456b30a2db9ea97dd2,python_cache,__pycache__,windows_primary,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-298faade3e7e92b8e1a1219e,python_cache,__pycache__,windows_primary,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-66f6994315b010160f5a4a36,python_cache,__pycache__,windows_primary,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-6010fb0f2cc181d67ecc2a8c,python_cache,__pycache__,windows_primary,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-cf5b73b20f478b95aec869e6,python_cache,__pycache__,windows_primary,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-c03a408ea48bdb1a2ab31e0a,python_cache,__pycache__,windows_primary,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-2132208e319820fbfcc65f2d,python_cache,__pycache__,windows_primary,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-03060d013363e2b76f1acc71,python_cache,__pycache__,windows_primary,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-ac7b205e21b48aefea354c6a,python_cache,__pycache__,windows_primary,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-370898ec8ec3cd56146b2d44,python_cache,__pycache__,windows_primary,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-2db02122d61d519da4abae5a,python_cache,__pycache__,windows_primary,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-60de362c773e18c35de7eacb,python_cache,__pycache__,windows_primary,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-ebc98d3d50aee2e8ba94819d,python_cache,__pycache__,windows_primary,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-da95c1295eec305004185f0c,python_cache,__pycache__,windows_primary,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-2adbca9af32efb4892f2eddf,python_cache,__pycache__,windows_primary,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-f5383ff0a51a83c05232a563,python_cache,__pycache__,windows_primary,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-5fde0409bfd86e4a4649cada,python_cache,__pycache__,windows_primary,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-46f327e5f1673b0871082895,python_cache,__pycache__,windows_primary,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-62f12b8e01980fc770cea32b,python_cache,__pycache__,windows_primary,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-04e45b0afe6152f5f3062829,python_cache,__pycache__,windows_primary,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-c8602d0effff290383727a77,python_cache,__pycache__,windows_primary,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-fe54b7997e0389795e17b50b,python_cache,__pycache__,windows_primary,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-fc1dfbf0fbae842cacc26306,python_cache,__pycache__,windows_primary,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-eca417b52186a96ce0b83a45,python_cache,__pycache__,windows_primary,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-ae39787aaffe6e2e697897a0,python_cache,__pycache__,windows_primary,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-1d6fce6791e78ccdf2f19d37,python_cache,__pycache__,windows_primary,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-b1901866a9bbd0a78fc77186,python_cache,__pycache__,windows_primary,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-8d2249a981da46ff0994be71,python_cache,__pycache__,windows_secondary,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-f148757e85ce6a1948c8f0dd,python_cache,__pycache__,windows_secondary,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-184c244a53912db7287596a4,python_cache,__pycache__,windows_secondary,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-076a0a5cfdae93c01779eff4,python_cache,__pycache__,windows_secondary,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-59a5f01a3922485c48858080,python_cache,__pycache__,windows_secondary,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-a6c6e911d776e6d78074abfd,python_cache,__pycache__,windows_secondary,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-2916b84236eb57089905178c,python_cache,__pycache__,windows_secondary,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-cf9ce386a463e98b9d98d9e8,python_cache,__pycache__,windows_secondary,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-4d016fc9743d9b2aa207d977,python_cache,__pycache__,windows_secondary,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-9d1d8f22a1def32e5fb33b27,python_cache,__pycache__,windows_secondary,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-3f43658d5bbcf12d266d4745,python_cache,__pycache__,windows_secondary,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-96a2ea6d33c0498dabd0e8fe,python_cache,__pycache__,windows_secondary,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-11df1531e24e56674b903f3b,python_cache,__pycache__,windows_secondary,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-14c46d6d5a905fa91d2cd314,python_cache,__pycache__,windows_secondary,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-5f32fafa16517ddd5269ce16,python_cache,__pycache__,windows_secondary,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-f361abac8631302a073a0396,python_cache,__pycache__,windows_secondary,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-aac25cd48b994b0282253491,python_cache,__pycache__,windows_secondary,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-5b60f6a89e661312afd0576b,python_cache,__pycache__,windows_secondary,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-478447bee2a54bc3ee8b9c79,python_cache,__pycache__,windows_secondary,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-0d570960ab19e1231dfbbcb5,python_cache,__pycache__,windows_secondary,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-09ae40cd180c5eb7956ff892,python_cache,__pycache__,windows_secondary,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-7a9cb81b3592731135a16090,python_cache,__pycache__,windows_secondary,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-bd388f33fa7c95b4da1be00b,python_cache,__pycache__,windows_secondary,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-40be3afa553e62aac7f5ea48,python_cache,__pycache__,windows_secondary,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-2dbc05eaa358028d89964da5,python_cache,__pycache__,windows_secondary,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-82eac89065c9172e71f8f004,python_cache,__pycache__,windows_secondary,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-39e4061ec3fc201f6bd9e8d2,python_cache,__pycache__,windows_secondary,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-5961d0b9707df28b64e660a7,python_cache,__pycache__,windows_secondary,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-8152d7ed5eda4cb93e763384,python_cache,__pycache__,windows_secondary,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-e92a88769093b80b228b26c3,python_cache,__pycache__,windows_secondary,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-a4f63483748adaf64c7ad890,python_cache,__pycache__,windows_secondary,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-16882a22680daaed30148776,python_cache,__pycache__,windows_secondary,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-311f289744b2417ec56e5718,python_cache,__pycache__,codex_server,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-ea95217e358d65e579f0887e,python_cache,__pycache__,codex_server,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-c0e5f3de2e74bcfff591352e,python_cache,__pycache__,codex_server,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-04237012fd5a97cb2455c8cf,python_cache,__pycache__,codex_server,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-01e945a10dc872a2fd7a8f8f,python_cache,__pycache__,codex_server,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-125b6073f8a4f568a362ad92,python_cache,__pycache__,codex_server,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-7d3ffb47116ffbd4facfdd8c,python_cache,__pycache__,codex_server,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-7554f7d46d9a298f4ac91505,python_cache,__pycache__,codex_server,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-6a497021a644d362c71736fd,python_cache,__pycache__,codex_server,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-493299bdd023618df3097399,python_cache,__pycache__,codex_server,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-bdab48fedbc824bab0c186b1,python_cache,__pycache__,codex_server,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-28366f381b81f962e25bafdc,python_cache,__pycache__,codex_server,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-fc968d28369664b62b66acd4,python_cache,__pycache__,codex_server,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-e90d5b05c8d43ef466caa895,python_cache,__pycache__,codex_server,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-5e6a835ba7b3171623e5e237,python_cache,__pycache__,codex_server,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-d09a60c35ecf3fe09338eac9,python_cache,__pycache__,codex_server,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-10c43523b6666ec6b4260c47,python_cache,__pycache__,codex_server,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-d79ba35039a495af7131b716,python_cache,__pycache__,codex_server,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-a5f2b076a55b81a374aaf167,python_cache,__pycache__,codex_server,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-36b54f0cbd693f524a815006,python_cache,__pycache__,codex_server,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-a26c0c55235ad8781a1ce970,python_cache,__pycache__,codex_server,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-b161490b4ef1d4b318e9dadb,python_cache,__pycache__,codex_server,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-f1cf75bf13e1a2c4b1fb9fad,python_cache,__pycache__,codex_server,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-2b81172a7cd9d1694e868f08,python_cache,__pycache__,codex_server,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-9ac3e0387c7a780c869199c6,python_cache,__pycache__,codex_server,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-a47bb2a54f2dce4551acb2aa,python_cache,__pycache__,codex_server,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-64d57d550e73e9f1c0bf2bb8,python_cache,__pycache__,codex_server,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-daab15b66f83da37b9db10bf,python_cache,__pycache__,codex_server,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-4c2bc9ec48570b43357a525e,python_cache,__pycache__,codex_server,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-13f26ca9c1011b69943d2133,python_cache,__pycache__,codex_server,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-172035517ee2aabefc2bef03,python_cache,__pycache__,codex_server,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-d68bfa311d8e7c2834d6a9c1,python_cache,__pycache__,codex_server,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-15e653d15e7ab5304d3fa3f0,python_cache,__pycache__,gitlab_server,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-20ff6c28378d85f20e48e744,python_cache,__pycache__,gitlab_server,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-63b30a5f1b844b56c20f03ea,python_cache,__pycache__,gitlab_server,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-18208866b104ed61d3cfcd80,python_cache,__pycache__,gitlab_server,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-591b0eb889fb9e4e4931c760,python_cache,__pycache__,gitlab_server,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-c9f441798d77496b419652eb,python_cache,__pycache__,gitlab_server,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-9a285f90b49b4a15ce17d479,python_cache,__pycache__,gitlab_server,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-71ed16529e7221b64449f740,python_cache,__pycache__,gitlab_server,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-5a2de4efef87933c0c2932aa,python_cache,__pycache__,gitlab_server,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-4a36dd87cc9c09e39c0c6827,python_cache,__pycache__,gitlab_server,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-4690e18062b31273789c8acd,python_cache,__pycache__,gitlab_server,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-8acf14c7ee9693068cd04b96,python_cache,__pycache__,gitlab_server,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-bcbe8ef7a31a2bf36937882a,python_cache,__pycache__,gitlab_server,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-40a331933f482c55c1fe6fe3,python_cache,__pycache__,gitlab_server,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-d9e74252a44509e1441bc88b,python_cache,__pycache__,gitlab_server,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-5bbf8384ada4f2476efadc76,python_cache,__pycache__,gitlab_server,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-70ef6cd5fc5b11bd376df812,python_cache,__pycache__,gitlab_server,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-b782c55f2131fa2a28a31e82,python_cache,__pycache__,gitlab_server,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-03b127edd086166fecdf18af,python_cache,__pycache__,gitlab_server,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-b5dd10ee1420f699635cc702,python_cache,__pycache__,gitlab_server,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-7985b7e55a99e9eb32fc7e19,python_cache,__pycache__,gitlab_server,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-5dd225c49f5e94de39940080,python_cache,__pycache__,gitlab_server,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-5320b91b3c7c1b5b353501b1,python_cache,__pycache__,gitlab_server,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-c580e8a739783a39f6012d90,python_cache,__pycache__,gitlab_server,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-2e8ab4fe9c56de5686041795,python_cache,__pycache__,gitlab_server,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-d8f7742d9c6b437f76166136,python_cache,__pycache__,gitlab_server,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-bbe1970fdd71845af7c9c98c,python_cache,__pycache__,gitlab_server,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-925060767c477055c16d42e9,python_cache,__pycache__,gitlab_server,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-472fbeb42ce16cf38904d9fe,python_cache,__pycache__,gitlab_server,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-6ed784f12b270bda41db5ea4,python_cache,__pycache__,gitlab_server,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-ca299d57e548c8e3063221c1,python_cache,__pycache__,gitlab_server,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-deadab3095454d6deb2a95b0,python_cache,__pycache__,gitlab_server,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-7b207a3d3a791e6f317b8478,python_cache,.pytest_cache,windows_primary,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-e279b4121145b47ee6986d26,python_cache,.pytest_cache,windows_primary,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-5968540933b2128d689fee93,python_cache,.pytest_cache,windows_primary,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-33a955f76cde3af0ba881437,python_cache,.pytest_cache,windows_primary,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-ed0473cfe535188b56d97f47,python_cache,.pytest_cache,windows_primary,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-85759245181f420fa61fca44,python_cache,.pytest_cache,windows_primary,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-d5e402a923c8455284f62eee,python_cache,.pytest_cache,windows_primary,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-5bf1de6d34f40d170540a993,python_cache,.pytest_cache,windows_primary,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-1d064ea395c1ae7596c65e6c,python_cache,.pytest_cache,windows_primary,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-0dcc7b6f7b302e93233eb409,python_cache,.pytest_cache,windows_primary,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-cc9f2536990336b7e9b85903,python_cache,.pytest_cache,windows_primary,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-70ad2943a83ac0e0d8da3842,python_cache,.pytest_cache,windows_primary,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-06e0233c29ddf68a3a8ab388,python_cache,.pytest_cache,windows_primary,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-bc2707f56e756c1c77b10267,python_cache,.pytest_cache,windows_primary,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-f77a5b5d611a40c6c8192ccf,python_cache,.pytest_cache,windows_primary,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-9c7668d773a35cb5982c6f90,python_cache,.pytest_cache,windows_primary,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-06cfc5f5ccd8aa67f5336b2d,python_cache,.pytest_cache,windows_primary,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-a00ace45d6169704ce1c4b2d,python_cache,.pytest_cache,windows_primary,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-bab58d5ee1ef5b369efab750,python_cache,.pytest_cache,windows_primary,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-be0554a384d0f9ecc3bda0f0,python_cache,.pytest_cache,windows_primary,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-2891102a6262a38514bbb0ec,python_cache,.pytest_cache,windows_primary,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-87892ebe77334f703bb9b00b,python_cache,.pytest_cache,windows_primary,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-5a71c29171cf471a07b0cbb0,python_cache,.pytest_cache,windows_primary,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-df2b6c007e2582703dfd6721,python_cache,.pytest_cache,windows_primary,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-df7c9d3072e0182eed224d4a,python_cache,.pytest_cache,windows_primary,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-4ae45ccf1bd5a243c5c76fff,python_cache,.pytest_cache,windows_primary,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-cbde3ad3db1f85d51a8105a1,python_cache,.pytest_cache,windows_primary,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-f9475645532f9fe7658095c1,python_cache,.pytest_cache,windows_primary,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-f4d1e3ea7cc11863567438b7,python_cache,.pytest_cache,windows_primary,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-3f2f69a1b67b52e97af53897,python_cache,.pytest_cache,windows_primary,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-12a5fe4fa84933253710e06e,python_cache,.pytest_cache,windows_primary,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-e16ad76c4ce99ac683135bab,python_cache,.pytest_cache,windows_primary,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-2a4a741e718cdb025f7c7f52,python_cache,.pytest_cache,windows_secondary,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-6f0aa0ce5d43150fffe49553,python_cache,.pytest_cache,windows_secondary,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-8315faf77d2b86cbf5711e7f,python_cache,.pytest_cache,windows_secondary,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-796cf5bf3e479b8f02b4ade3,python_cache,.pytest_cache,windows_secondary,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-9d8619770c68b634c8977bf7,python_cache,.pytest_cache,windows_secondary,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-3ab9be0325abbc9669415405,python_cache,.pytest_cache,windows_secondary,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-11690632c34149d2981661bf,python_cache,.pytest_cache,windows_secondary,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-452af2016d6bf9531b803f2f,python_cache,.pytest_cache,windows_secondary,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-7af812bd28d5fb4216c7a7b4,python_cache,.pytest_cache,windows_secondary,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-2f8c66d6860fb111dc7a2d6f,python_cache,.pytest_cache,windows_secondary,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-29292d4b3f77614437399b52,python_cache,.pytest_cache,windows_secondary,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-df69f6ddb8e61facc4f73729,python_cache,.pytest_cache,windows_secondary,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-97b8870c7c1ca4827373b1d1,python_cache,.pytest_cache,windows_secondary,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-9df2765b268c40a62204f497,python_cache,.pytest_cache,windows_secondary,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-98ef9922162de44ebe8163ae,python_cache,.pytest_cache,windows_secondary,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-5b5687d9c2c9589718090602,python_cache,.pytest_cache,windows_secondary,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-473fb24bc97989d9740ca396,python_cache,.pytest_cache,windows_secondary,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-026ce33ea887b038d856e2c8,python_cache,.pytest_cache,windows_secondary,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-0e7704a381980cd0bfc8033e,python_cache,.pytest_cache,windows_secondary,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-0e3c64a8cf4bee5c966da4be,python_cache,.pytest_cache,windows_secondary,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-ebf06445a5f8966a87216ba6,python_cache,.pytest_cache,windows_secondary,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-448609075c37e1a48c8ec848,python_cache,.pytest_cache,windows_secondary,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-6e581deaad4278708d386e4c,python_cache,.pytest_cache,windows_secondary,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-e6f59b1931a735f3128fe9d5,python_cache,.pytest_cache,windows_secondary,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-9d5b4a1dcc88dc7e2f56ab75,python_cache,.pytest_cache,windows_secondary,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-a98d0e581fca3f1671906f86,python_cache,.pytest_cache,windows_secondary,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-ef9dbe665d6aad551f3b257c,python_cache,.pytest_cache,windows_secondary,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-ae66a440587b249336945595,python_cache,.pytest_cache,windows_secondary,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-08bb654daa75d6c1b0869690,python_cache,.pytest_cache,windows_secondary,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-b87f308f7e2e4d6a4489f6da,python_cache,.pytest_cache,windows_secondary,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-05e1a2d2fb6e1665fd521420,python_cache,.pytest_cache,windows_secondary,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-3b5f1f9315924d99683160a1,python_cache,.pytest_cache,windows_secondary,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-6ca7b6117e3e8182bde83a71,python_cache,.pytest_cache,codex_server,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-0de3d34c785f234b39d90199,python_cache,.pytest_cache,codex_server,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-66263dacf8bec47acbc549d4,python_cache,.pytest_cache,codex_server,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-79eef25908321869d4ff5a8c,python_cache,.pytest_cache,codex_server,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-33f0d2f5869c3612677d618b,python_cache,.pytest_cache,codex_server,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-5b6e5ab1e952b8bc3a880a66,python_cache,.pytest_cache,codex_server,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-8e3fd84d0413b8373f6d2e63,python_cache,.pytest_cache,codex_server,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-e44d44412fabe1a61c17c9af,python_cache,.pytest_cache,codex_server,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-c544a8dae9574edff110b6c3,python_cache,.pytest_cache,codex_server,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-345599d8b3d545f8c88fe6f8,python_cache,.pytest_cache,codex_server,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-c1f4702f8b43035a75aa8799,python_cache,.pytest_cache,codex_server,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-75c30415207eee8b88899f6d,python_cache,.pytest_cache,codex_server,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-243ce1e2686d144903693104,python_cache,.pytest_cache,codex_server,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-8a02ea14e78603ab3b7c7370,python_cache,.pytest_cache,codex_server,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-fb3fdcd04f57c68ec8d9c513,python_cache,.pytest_cache,codex_server,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-14cd0040ba2e8ab49d703f96,python_cache,.pytest_cache,codex_server,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-0cf67ea02315f1b8fa70d190,python_cache,.pytest_cache,codex_server,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-d6d6f372941bdbc0e914cef8,python_cache,.pytest_cache,codex_server,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-d7b06fbf7feb8a1c07d4218f,python_cache,.pytest_cache,codex_server,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-3c0cc888597abbad3935d3dc,python_cache,.pytest_cache,codex_server,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-11db86eb246a30ce05fec98e,python_cache,.pytest_cache,codex_server,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-db1ebf582b5f30bf5b38936d,python_cache,.pytest_cache,codex_server,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-f520711c4be9be2e77a77aa2,python_cache,.pytest_cache,codex_server,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-d6974e998cf6dae2a39f911e,python_cache,.pytest_cache,codex_server,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-a8f115854f6d29351736caa2,python_cache,.pytest_cache,codex_server,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-de14923e9154de8a0b8d9b3d,python_cache,.pytest_cache,codex_server,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-aed8d6266538f458c3f42d27,python_cache,.pytest_cache,codex_server,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-e3e2e75f2df386dcf0b1da5b,python_cache,.pytest_cache,codex_server,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-20921f16c47360a628795d80,python_cache,.pytest_cache,codex_server,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-9f215a076512d81edf354b12,python_cache,.pytest_cache,codex_server,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-552e187f20362e020afdc084,python_cache,.pytest_cache,codex_server,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-4b9f208cdd8f600a76035792,python_cache,.pytest_cache,codex_server,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-74a472030b4d25592e3bca5a,python_cache,.pytest_cache,gitlab_server,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-700a1c5401431e0b2c7e589e,python_cache,.pytest_cache,gitlab_server,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-fb938811a0ffbffffbd7cb4d,python_cache,.pytest_cache,gitlab_server,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-f7b2693ff4ebcec151d9c88e,python_cache,.pytest_cache,gitlab_server,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-5f997a897abf9ab1a2b5d015,python_cache,.pytest_cache,gitlab_server,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-21a158eec54e00ef022b53ad,python_cache,.pytest_cache,gitlab_server,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-aee6af6921f7c3c1391ee7f2,python_cache,.pytest_cache,gitlab_server,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-3ffa0f238072caa0ff047443,python_cache,.pytest_cache,gitlab_server,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-91cab140715d603f30f2073b,python_cache,.pytest_cache,gitlab_server,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-a42177a9daf812a49f0ec814,python_cache,.pytest_cache,gitlab_server,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-b6a14a6321194517bba70ecb,python_cache,.pytest_cache,gitlab_server,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-1c5f3ebc1f996db9aafd91e7,python_cache,.pytest_cache,gitlab_server,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-70f1a37c0c1ace5b824b7d7b,python_cache,.pytest_cache,gitlab_server,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-2d37054caf535025614bcf13,python_cache,.pytest_cache,gitlab_server,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-9ea95ff57e37f0c9bc56005c,python_cache,.pytest_cache,gitlab_server,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-d3716924c8e2cdab419a0580,python_cache,.pytest_cache,gitlab_server,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-03f3b8165c4db80746608723,python_cache,.pytest_cache,gitlab_server,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-44221f755b34f9b710bd81b9,python_cache,.pytest_cache,gitlab_server,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-7d544fd5c74146628f77b27e,python_cache,.pytest_cache,gitlab_server,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-e7d63542c50a0c10bca83207,python_cache,.pytest_cache,gitlab_server,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-6e8030c35d3edd55960e2902,python_cache,.pytest_cache,gitlab_server,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-caf48d7cf23108b747994d25,python_cache,.pytest_cache,gitlab_server,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-6c581eb23138ce79c767c194,python_cache,.pytest_cache,gitlab_server,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-6505cc4cc5bb7d5eb7ae978b,python_cache,.pytest_cache,gitlab_server,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-ba8dab07e007011ca2548c10,python_cache,.pytest_cache,gitlab_server,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-b8daebbaa209586df5eeb14b,python_cache,.pytest_cache,gitlab_server,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-c1231ec6bb0da4e2eec79ca2,python_cache,.pytest_cache,gitlab_server,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-d449800773bebe30d2288b57,python_cache,.pytest_cache,gitlab_server,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-e8380cd22390dab5eb1fe835,python_cache,.pytest_cache,gitlab_server,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-9eb6455e539dda09840fe026,python_cache,.pytest_cache,gitlab_server,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-f654e04a6a7ab140477d4694,python_cache,.pytest_cache,gitlab_server,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-982afb22b744d71ad93b21cc,python_cache,.pytest_cache,gitlab_server,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-f0e2b6051a25680213ccf102,wrangler_cache,.wrangler,windows_primary,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-a3af7be6e4f141cc713654ee,wrangler_cache,.wrangler,windows_primary,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-2f13a72218ef2d257b4bfcde,wrangler_cache,.wrangler,windows_primary,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-08bbd8b44d1c96f566d43c6d,wrangler_cache,.wrangler,windows_primary,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-ed79be5c165080a69d4da3b3,wrangler_cache,.wrangler,windows_primary,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-163a50a2dc5c6cb4108af4e7,wrangler_cache,.wrangler,windows_primary,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-d329c44c041c98f8b6fb43c6,wrangler_cache,.wrangler,windows_primary,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-6ba92d9ca9913e59780967aa,wrangler_cache,.wrangler,windows_primary,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-27c722628e07f142c84e88f3,wrangler_cache,.wrangler,windows_primary,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-d682bd4ec67208db5419d0f6,wrangler_cache,.wrangler,windows_primary,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-38fda31ce5365bf61225c90c,wrangler_cache,.wrangler,windows_primary,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-3770025fb1f3854afa2bc5d6,wrangler_cache,.wrangler,windows_primary,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-0e8d6bbec1483d77de15cf70,wrangler_cache,.wrangler,windows_primary,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-569c8f0dbe1a605d213bc8d0,wrangler_cache,.wrangler,windows_primary,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-6e4f7f3ec011edeb9270cb26,wrangler_cache,.wrangler,windows_primary,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-4f647d77b82a5c706e3b08a6,wrangler_cache,.wrangler,windows_primary,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-db9df0db8b910fd59fc05e9e,wrangler_cache,.wrangler,windows_primary,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-2ab31dd9b6f2deecab0c6d99,wrangler_cache,.wrangler,windows_primary,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-e31b3fd8f18816a6c097a8e4,wrangler_cache,.wrangler,windows_primary,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-8991cc58fe251b5d17a06f9d,wrangler_cache,.wrangler,windows_primary,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-4581a3dbde65d8f5a5cbccd7,wrangler_cache,.wrangler,windows_primary,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-d4960d4ad8ad6747ba366a4e,wrangler_cache,.wrangler,windows_primary,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-7986f0ba518a02fec67706d5,wrangler_cache,.wrangler,windows_primary,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-59c195524c2c837243ea36d4,wrangler_cache,.wrangler,windows_primary,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-268698824b7ca6d89ae138b8,wrangler_cache,.wrangler,windows_primary,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-1f36908ae742334e297aa565,wrangler_cache,.wrangler,windows_primary,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-84f51b297cffbfe298d595d6,wrangler_cache,.wrangler,windows_primary,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-722c86c78f4dbe98cc309348,wrangler_cache,.wrangler,windows_primary,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-5ffec5fcda1adfa1d6e69bdd,wrangler_cache,.wrangler,windows_primary,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-5ba86011aca991c11a8d72a2,wrangler_cache,.wrangler,windows_primary,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-13ea61c81896f8c942b05670,wrangler_cache,.wrangler,windows_primary,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-ed14307ef99edbb193a267ed,wrangler_cache,.wrangler,windows_primary,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-76599755c3ddb214f2580256,wrangler_cache,.wrangler,windows_secondary,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-146ca18cc96e7a50f560f4c8,wrangler_cache,.wrangler,windows_secondary,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-64c88ba7749ba1aa2291d960,wrangler_cache,.wrangler,windows_secondary,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-2555e53706afb3445ea306dd,wrangler_cache,.wrangler,windows_secondary,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-b6186775ccf8a3143cac3095,wrangler_cache,.wrangler,windows_secondary,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-253ca137bf7792eae6f6afe7,wrangler_cache,.wrangler,windows_secondary,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-d673936d448cb3e55193de2f,wrangler_cache,.wrangler,windows_secondary,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-c0cadb1f39241a8723c9def0,wrangler_cache,.wrangler,windows_secondary,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-a72e60e8e654205f3489d45a,wrangler_cache,.wrangler,windows_secondary,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-6c135bafc30adb986cc2582d,wrangler_cache,.wrangler,windows_secondary,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-78885c01e1571771b6f11c4a,wrangler_cache,.wrangler,windows_secondary,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-fbfd687902f6a541e30e1ac1,wrangler_cache,.wrangler,windows_secondary,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-d4d2ef4f5c60ccc5d23a7acc,wrangler_cache,.wrangler,windows_secondary,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-4853f08faf25dac8fbecbfad,wrangler_cache,.wrangler,windows_secondary,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-3f840724dac52cb6b2d70eed,wrangler_cache,.wrangler,windows_secondary,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-5ef4ce282af729d6e1dc0409,wrangler_cache,.wrangler,windows_secondary,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-730bf84a8cae7a615dd2cde7,wrangler_cache,.wrangler,windows_secondary,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-67828302aeb6108baf5e913b,wrangler_cache,.wrangler,windows_secondary,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-5bc36e1c0862f5ae0c11f858,wrangler_cache,.wrangler,windows_secondary,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-17fc36aabcf66ffdfec97a76,wrangler_cache,.wrangler,windows_secondary,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-c7aba80c4a6cd80bc97a6d0f,wrangler_cache,.wrangler,windows_secondary,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-83772e39a4fb64e48e6ab291,wrangler_cache,.wrangler,windows_secondary,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-16988d22e89d4a6a99dd2e47,wrangler_cache,.wrangler,windows_secondary,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-3c4bf9d8d8fb5bac9b2e75b7,wrangler_cache,.wrangler,windows_secondary,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-87608a76b15f5d8745748d64,wrangler_cache,.wrangler,windows_secondary,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-2f840343397bb87c6aba63db,wrangler_cache,.wrangler,windows_secondary,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-14a85b1dd3407909b1d176f7,wrangler_cache,.wrangler,windows_secondary,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-d95fdaf4a82bb861a713dff5,wrangler_cache,.wrangler,windows_secondary,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-c940fcb3fbc0c2944016af42,wrangler_cache,.wrangler,windows_secondary,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-f14f76fc053be5a94f5e9300,wrangler_cache,.wrangler,windows_secondary,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-e5396371e44367535b2f936e,wrangler_cache,.wrangler,windows_secondary,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-4a198217ed6b7acd1463b92b,wrangler_cache,.wrangler,windows_secondary,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-7b2bb360c07c84246a2bc1f4,wrangler_cache,.wrangler,codex_server,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-e29145fe333ad74c945e675e,wrangler_cache,.wrangler,codex_server,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-5b6471a4ffc2095ff31f9736,wrangler_cache,.wrangler,codex_server,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-f9c172c42ac667a5d4547208,wrangler_cache,.wrangler,codex_server,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-1e71b529f7d4af70df1639a6,wrangler_cache,.wrangler,codex_server,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-aa4a2dd7e6fafa2eef68f546,wrangler_cache,.wrangler,codex_server,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-dd8eaa8a2c70f4970e7ebd97,wrangler_cache,.wrangler,codex_server,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-a994cdbf2e7b6cadd22f8e68,wrangler_cache,.wrangler,codex_server,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-f1dc1a574349d54522da7252,wrangler_cache,.wrangler,codex_server,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-2848b32ea4904920e8727e64,wrangler_cache,.wrangler,codex_server,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-3704752a0d1eaf47cd808d8a,wrangler_cache,.wrangler,codex_server,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-f5ff81a0290e52bd45b86614,wrangler_cache,.wrangler,codex_server,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-a9985e7494f404fa34edb2ec,wrangler_cache,.wrangler,codex_server,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-8adee75cc23524ca2b30d800,wrangler_cache,.wrangler,codex_server,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-b5063a908bc79d9cd8180203,wrangler_cache,.wrangler,codex_server,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-6249511fc04663897c59e2da,wrangler_cache,.wrangler,codex_server,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-19be3063a54ed38cffb55922,wrangler_cache,.wrangler,codex_server,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-de9c70910bccde11ffd55932,wrangler_cache,.wrangler,codex_server,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-2b71c88aa1e44baabc861f8b,wrangler_cache,.wrangler,codex_server,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-45f04dac7949ea1d87d7377e,wrangler_cache,.wrangler,codex_server,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-2e0c852873f8c290d0014a69,wrangler_cache,.wrangler,codex_server,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-7654ea24cf551c7df44bec7f,wrangler_cache,.wrangler,codex_server,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-0fdb4b3b894982879bfbb595,wrangler_cache,.wrangler,codex_server,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-8a46e253958bc78425630ac0,wrangler_cache,.wrangler,codex_server,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-e4cffff4b64781d5a71ad8a4,wrangler_cache,.wrangler,codex_server,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-7df056d40f919115b610e8de,wrangler_cache,.wrangler,codex_server,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-8eeb7ce34439ccc686f2e9fd,wrangler_cache,.wrangler,codex_server,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-abed9576e63e2e8001108893,wrangler_cache,.wrangler,codex_server,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-9650d6516e6d90b8a313bbae,wrangler_cache,.wrangler,codex_server,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-024109833dcf342159869d9e,wrangler_cache,.wrangler,codex_server,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-4068f81ef65dd9f8eba998db,wrangler_cache,.wrangler,codex_server,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-fbc051d2d39caf213e9f1430,wrangler_cache,.wrangler,codex_server,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-98c35775c76f56f87e697292,wrangler_cache,.wrangler,gitlab_server,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-4b3875daa21ef76cfaf877ef,wrangler_cache,.wrangler,gitlab_server,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-0dc5d213e960894ff570fd67,wrangler_cache,.wrangler,gitlab_server,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-66a30a305235af1e32a40a2f,wrangler_cache,.wrangler,gitlab_server,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-f0cb9b340cc1e8b46a60b82c,wrangler_cache,.wrangler,gitlab_server,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-f9fd1b84c092199ee1e9bbaa,wrangler_cache,.wrangler,gitlab_server,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-7bc73aac3aa5c0efc719ff24,wrangler_cache,.wrangler,gitlab_server,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-a2361d1449277ffac0b7c319,wrangler_cache,.wrangler,gitlab_server,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-e4d8ba483acbe3138913f1b7,wrangler_cache,.wrangler,gitlab_server,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-a2fc3d7f1c55a469e9f3cb13,wrangler_cache,.wrangler,gitlab_server,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-000a077f2126799a82be50af,wrangler_cache,.wrangler,gitlab_server,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-35519f2946cd0bbc1d6ad279,wrangler_cache,.wrangler,gitlab_server,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-6d7ab1fe5611d32d2ff7fda2,wrangler_cache,.wrangler,gitlab_server,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-d58bb7492b68149eb5144779,wrangler_cache,.wrangler,gitlab_server,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-36b3fac3b36d0909398c6fa1,wrangler_cache,.wrangler,gitlab_server,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-001bbaca12e34d3e4e2281bc,wrangler_cache,.wrangler,gitlab_server,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-e2762c4f6dc36f01a6430d46,wrangler_cache,.wrangler,gitlab_server,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-23908cef899a112822bffc0b,wrangler_cache,.wrangler,gitlab_server,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-1c18eedeec01afb4018f65be,wrangler_cache,.wrangler,gitlab_server,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-efc0ba853d054fa9dd04adf4,wrangler_cache,.wrangler,gitlab_server,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-278cf6ffd1070e98ae68567b,wrangler_cache,.wrangler,gitlab_server,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-c1982d8142ea2dfcb1ac7aa3,wrangler_cache,.wrangler,gitlab_server,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-d3e2c0a1ecf2e0c6fcb65f85,wrangler_cache,.wrangler,gitlab_server,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-aa24ee54de8dab3357bed94a,wrangler_cache,.wrangler,gitlab_server,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-ba3ea3220550c44c4ba6d12e,wrangler_cache,.wrangler,gitlab_server,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-61c286abeb81d74f1d022716,wrangler_cache,.wrangler,gitlab_server,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-581cc1a274a2e3f121e31592,wrangler_cache,.wrangler,gitlab_server,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-1c678540b8d8786d2a4da29b,wrangler_cache,.wrangler,gitlab_server,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-56e2087b052ace9ba6914c39,wrangler_cache,.wrangler,gitlab_server,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-c43dcbf5eecd74a6d1eba788,wrangler_cache,.wrangler,gitlab_server,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-8648c8a8a58c63e70ee3d38b,wrangler_cache,.wrangler,gitlab_server,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-4350b7408b77eed3ae03c0de,wrangler_cache,.wrangler,gitlab_server,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-22c74a9d44e2d054b9863970,frontend_cache,.next,windows_primary,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-3d33ec90185c9d4957374171,frontend_cache,.next,windows_primary,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-3d5bf59275e82f7b7f45a933,frontend_cache,.next,windows_primary,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-7ba1a3e6113b262f71b9173d,frontend_cache,.next,windows_primary,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-75ba4adafcddcfb5b67815de,frontend_cache,.next,windows_primary,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-9a8928f153f21c4d8d4a5a6d,frontend_cache,.next,windows_primary,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-4df3d6da62eaca340acfc1b7,frontend_cache,.next,windows_primary,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-4f858de871f2c8c61d8ed99c,frontend_cache,.next,windows_primary,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-73cbb47ee4bebda40cf859dd,frontend_cache,.next,windows_primary,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-2a56e0c5c52ffa7ccfd63235,frontend_cache,.next,windows_primary,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-96be0449a41a7531a9a629be,frontend_cache,.next,windows_primary,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-ea8d1273efaa262fa6584217,frontend_cache,.next,windows_primary,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-45b24072fbf863e2a582abf2,frontend_cache,.next,windows_primary,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-d41f81201d424f12cb5b1a8e,frontend_cache,.next,windows_primary,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-240d8207db07c760da9b4aac,frontend_cache,.next,windows_primary,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-7e5487d0ea209b2e3545c76a,frontend_cache,.next,windows_primary,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-18748e0fba7b6b308add53a4,frontend_cache,.next,windows_primary,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-2015bfde09b95275e9e70fc8,frontend_cache,.next,windows_primary,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-759f0598883c3d56945439dd,frontend_cache,.next,windows_primary,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-e3253eb4588deadb37c463c8,frontend_cache,.next,windows_primary,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-b170daccd7f13580a3ddda95,frontend_cache,.next,windows_primary,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-30d012f2c68095cd3ab930cc,frontend_cache,.next,windows_primary,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-04c6c8b1021c9946609e500d,frontend_cache,.next,windows_primary,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-a6ebb6a02daaf23b189aaee4,frontend_cache,.next,windows_primary,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-0d9cf8c911ec89ae7bbcbcc8,frontend_cache,.next,windows_primary,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-601e758bb6aaefb1d5b95488,frontend_cache,.next,windows_primary,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-cd384de6a85c2c1899c18b0d,frontend_cache,.next,windows_primary,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-7892a6dd03a64bd69b3b4a25,frontend_cache,.next,windows_primary,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-b07ca7473e2758bbdf3b4ccc,frontend_cache,.next,windows_primary,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-1e64395d9f612a68b283039a,frontend_cache,.next,windows_primary,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-bcb88ec7c8cb47b192ecf0b4,frontend_cache,.next,windows_primary,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-e310dcdf670018af2a955762,frontend_cache,.next,windows_primary,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-ed0110b21f9ab9a1ac1b9448,frontend_cache,.next,windows_secondary,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-847f6c09b0b3fab916b91a9e,frontend_cache,.next,windows_secondary,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-a076ad0984945ecbdefa49fb,frontend_cache,.next,windows_secondary,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-66aa00e77b151d5f5fb74277,frontend_cache,.next,windows_secondary,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-c86b22225a82361f7f150654,frontend_cache,.next,windows_secondary,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-c5927072d76ce90c12a7f9c3,frontend_cache,.next,windows_secondary,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-fb158a9eba665564ba86ab86,frontend_cache,.next,windows_secondary,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-8b93f7c0ba6e7c7ffd03227b,frontend_cache,.next,windows_secondary,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-457e6a520f9dcbfc73c8bb1a,frontend_cache,.next,windows_secondary,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-fbf4729faabaeaf5dfe037a6,frontend_cache,.next,windows_secondary,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-8d071aff151dc769eb66afe2,frontend_cache,.next,windows_secondary,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-64a8497183c578e6a8d782cc,frontend_cache,.next,windows_secondary,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-9b6e5bcdeddb31242c7e1ec1,frontend_cache,.next,windows_secondary,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-4597fbb28d82e8fadc2a0dbd,frontend_cache,.next,windows_secondary,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-19ae86641c8116e5699131e1,frontend_cache,.next,windows_secondary,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-4f285474970ee4be5a909818,frontend_cache,.next,windows_secondary,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-904c27b078124b1a4a04f7ea,frontend_cache,.next,windows_secondary,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-586afa325d570cbade8b1dc4,frontend_cache,.next,windows_secondary,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-0d75b61c03c5241927bc7279,frontend_cache,.next,windows_secondary,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-73ac418af2cde40ae8e625cb,frontend_cache,.next,windows_secondary,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-e17cd72e4956e13298dd71b3,frontend_cache,.next,windows_secondary,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-abdacd8de8be55b05d2d2836,frontend_cache,.next,windows_secondary,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-69320c8ee9038a249a43b2b4,frontend_cache,.next,windows_secondary,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-88fa48f7fe2fb54289bce6b8,frontend_cache,.next,windows_secondary,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-ad2fa2093eb57c0e42d5301a,frontend_cache,.next,windows_secondary,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-c94dfde395711f63fea0e8bf,frontend_cache,.next,windows_secondary,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-9ebf4a60207b70d609008396,frontend_cache,.next,windows_secondary,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-d05a984f1f6e107828f2964b,frontend_cache,.next,windows_secondary,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-74ce7b97ce2929a015e2a8f0,frontend_cache,.next,windows_secondary,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-859b86db42440e65253d9f7a,frontend_cache,.next,windows_secondary,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-ced699e7ee39dcfea4d5d251,frontend_cache,.next,windows_secondary,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-9636f3326a6ca48b80710f0b,frontend_cache,.next,windows_secondary,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-227c86b164a0e44bfe832d92,frontend_cache,.next,codex_server,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-d6d7766af231f2e78c308e01,frontend_cache,.next,codex_server,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-bcc46b70129397e76a120906,frontend_cache,.next,codex_server,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-113753bb402aca8e07e5a68e,frontend_cache,.next,codex_server,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-9313fbfe524aef9ce33e9cbf,frontend_cache,.next,codex_server,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-9bd8f5f826d3f1bc9bd4ed58,frontend_cache,.next,codex_server,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-012278d375756ac0d6130c32,frontend_cache,.next,codex_server,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-4a225791d1b78cd10df48170,frontend_cache,.next,codex_server,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-23cf3b9f005a679799f02adc,frontend_cache,.next,codex_server,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-86142aa2b3211a406770f3d7,frontend_cache,.next,codex_server,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-a9ea8cdbf1a1e9a709702033,frontend_cache,.next,codex_server,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-37970b760c7a0b62f1809095,frontend_cache,.next,codex_server,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-9982ccf4eaa6a7403c7a296a,frontend_cache,.next,codex_server,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-b6e181a8ad5a520fc83713f6,frontend_cache,.next,codex_server,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-6e2540a8eb69beb6703d294c,frontend_cache,.next,codex_server,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-13eba0af5f32e47083d8aaf1,frontend_cache,.next,codex_server,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-779c45f371d1139159ed5d1e,frontend_cache,.next,codex_server,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-64f12486816b39cd61f65e48,frontend_cache,.next,codex_server,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-f6b00d9941e5b8af11634087,frontend_cache,.next,codex_server,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-1659f562c225a77c3d21dc73,frontend_cache,.next,codex_server,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-9335b00b04946829d3588027,frontend_cache,.next,codex_server,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-52dca61180e69b4271c76a7f,frontend_cache,.next,codex_server,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-a3fef04c3a6b141850abccd3,frontend_cache,.next,codex_server,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-594cba404021ad5bd3ebad7b,frontend_cache,.next,codex_server,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-fe57de6bd6fb8e2b1504832a,frontend_cache,.next,codex_server,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-2ace51e893057fe8671e6688,frontend_cache,.next,codex_server,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-b2a96120b23e44db4778f8af,frontend_cache,.next,codex_server,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-f99d794752cb041dc7f25950,frontend_cache,.next,codex_server,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-19346eaca474373147e999f5,frontend_cache,.next,codex_server,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-075f43f30090d6d192c0cef3,frontend_cache,.next,codex_server,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-f76958cfcb496ad70f9f0f01,frontend_cache,.next,codex_server,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-f499a5bc1a1fecc8c9bcc8f1,frontend_cache,.next,codex_server,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-5f4d99c2b848ba44b381cae6,frontend_cache,.next,gitlab_server,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-5d39f4105afc058245d4633f,frontend_cache,.next,gitlab_server,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-dabcc036c56f5d4d06351858,frontend_cache,.next,gitlab_server,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-bb876e19d0b5a14a99e95735,frontend_cache,.next,gitlab_server,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-d4229bef08dd182ea60e3d3a,frontend_cache,.next,gitlab_server,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-721c883ed20e78954e7fffcd,frontend_cache,.next,gitlab_server,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-9313a46effd4894e107f20f9,frontend_cache,.next,gitlab_server,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-b7d44bc073e9b42428941b69,frontend_cache,.next,gitlab_server,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-fe16542c98a1af3006458f71,frontend_cache,.next,gitlab_server,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-532d55f81b3bd7b233f67830,frontend_cache,.next,gitlab_server,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-16a26d6fc983daf6b5a6c01e,frontend_cache,.next,gitlab_server,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-a4aff3139b3dc4c81f3b501c,frontend_cache,.next,gitlab_server,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-6b80fcb4fca18dea23955702,frontend_cache,.next,gitlab_server,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-3e1a73f87836c8c33bfd815e,frontend_cache,.next,gitlab_server,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-407f448262c313de9cf161a7,frontend_cache,.next,gitlab_server,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-4fe64e17e2a16b7d77212e76,frontend_cache,.next,gitlab_server,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-a7a63624b4a8bb95aeb68565,frontend_cache,.next,gitlab_server,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-87ccd163d920af8cc016f70b,frontend_cache,.next,gitlab_server,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-a0d8405f3d874e9d3c4910c7,frontend_cache,.next,gitlab_server,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-ef4bcd92bdc64c57cd9eb200,frontend_cache,.next,gitlab_server,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-5df093724dca735493938770,frontend_cache,.next,gitlab_server,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-683a7a4c24b4720d5c2e5962,frontend_cache,.next,gitlab_server,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-ee1738d67c9abc1618c53ce9,frontend_cache,.next,gitlab_server,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-451a287df1c92b445bf66452,frontend_cache,.next,gitlab_server,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-b8e2f35fb5b277faf4e0582d,frontend_cache,.next,gitlab_server,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-654f6e5b7878a732bce3ddd7,frontend_cache,.next,gitlab_server,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-011ca6acea0013d9d6792624,frontend_cache,.next,gitlab_server,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-5264259a6239efd45d8d082e,frontend_cache,.next,gitlab_server,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-ad36a1c3a90d399951753f40,frontend_cache,.next,gitlab_server,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-d1b60206e4153aa8e89d4c57,frontend_cache,.next,gitlab_server,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-6ada66edaab8afd12ec2d953,frontend_cache,.next,gitlab_server,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-f4ca1716fdabf68ef6378f67,frontend_cache,.next,gitlab_server,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-aa893a91f0b5f529c81ce350,frontend_cache,.vite,windows_primary,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-11a40a009ad019cb3ebd8f38,frontend_cache,.vite,windows_primary,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-e4e2e731428c9b643367502a,frontend_cache,.vite,windows_primary,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-d17635d8ea6b6caea750ff47,frontend_cache,.vite,windows_primary,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-0b88c0dbe0eba1cc5c572f0c,frontend_cache,.vite,windows_primary,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-4a6a9762206a340d5a73ea89,frontend_cache,.vite,windows_primary,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-70c14fad6bae54129e76c2c6,frontend_cache,.vite,windows_primary,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-b8fa1e76b5d884d1ae694643,frontend_cache,.vite,windows_primary,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-e337072edbab6dad9fd1d04f,frontend_cache,.vite,windows_primary,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-05b39e39b6738b390427d073,frontend_cache,.vite,windows_primary,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-0584816380b491b1da811ceb,frontend_cache,.vite,windows_primary,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-03c8de45e0beae174e6c5781,frontend_cache,.vite,windows_primary,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-8ea8c11d5c791bcf01ee1953,frontend_cache,.vite,windows_primary,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-bc176afed19789f7bf4dc139,frontend_cache,.vite,windows_primary,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-ef300c230504f207710dd0f9,frontend_cache,.vite,windows_primary,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-a98a57f84cbf1c22a24fea93,frontend_cache,.vite,windows_primary,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-f345f2d91b8238dc04041be0,frontend_cache,.vite,windows_primary,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-70f7c1d8e6149876076a959a,frontend_cache,.vite,windows_primary,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-e5a446021377ff395b209299,frontend_cache,.vite,windows_primary,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-d08309e65aabbdba8abe3aaf,frontend_cache,.vite,windows_primary,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-50828d18c18bd3247332b6a5,frontend_cache,.vite,windows_primary,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-56f28e1d8f9682bc482225da,frontend_cache,.vite,windows_primary,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-cc1f17ad63a3ae5cc0588888,frontend_cache,.vite,windows_primary,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-f070cf6d96acb2c05656da20,frontend_cache,.vite,windows_primary,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-b4f0b10a3731507d678e5739,frontend_cache,.vite,windows_primary,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-815728dd18b4c3f0257b299e,frontend_cache,.vite,windows_primary,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-2adf27a1f3f8dc64b53ee811,frontend_cache,.vite,windows_primary,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-18733c27b8a2533955277242,frontend_cache,.vite,windows_primary,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-64164dec7e915a2810308110,frontend_cache,.vite,windows_primary,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-557d7fcb8d4146a70da6d39c,frontend_cache,.vite,windows_primary,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-8305b95bf3f41504b12a4fd6,frontend_cache,.vite,windows_primary,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-5969e0b7d7615f7e8deefee3,frontend_cache,.vite,windows_primary,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-6abcbc7eec1f6012a172abf6,frontend_cache,.vite,windows_secondary,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-f71c501dfaefc571ad43bff1,frontend_cache,.vite,windows_secondary,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-b4ca4fd058f6772395ce884d,frontend_cache,.vite,windows_secondary,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-6e769f09debd26d12ce4e966,frontend_cache,.vite,windows_secondary,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-9a0065d55fd7b87c3387b9cd,frontend_cache,.vite,windows_secondary,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-32905efed7ae8bf7dafddb7a,frontend_cache,.vite,windows_secondary,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-28d011fa95d4f3f673bce020,frontend_cache,.vite,windows_secondary,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-5f5de90f4f40d87ad197cee9,frontend_cache,.vite,windows_secondary,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-8a7c85e238b58c7485eddcba,frontend_cache,.vite,windows_secondary,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-9b0b9d048bf5e69c8f9bffa0,frontend_cache,.vite,windows_secondary,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-0637ea1b545929499e4e2061,frontend_cache,.vite,windows_secondary,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-942bae654f19be6f55d90429,frontend_cache,.vite,windows_secondary,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-858b2527eb9d096116aaa4a9,frontend_cache,.vite,windows_secondary,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-502c23c01f6adc687586669e,frontend_cache,.vite,windows_secondary,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-b14695cd40cfb1e59928405d,frontend_cache,.vite,windows_secondary,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-5aabc84c8591fadc1de0bc29,frontend_cache,.vite,windows_secondary,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-9e8888316d1f80f22ae15466,frontend_cache,.vite,windows_secondary,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-86cdb8a52a381b22de788293,frontend_cache,.vite,windows_secondary,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-a17693cc26b04a8f94276385,frontend_cache,.vite,windows_secondary,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-fc44a31f114d5de20b00e08c,frontend_cache,.vite,windows_secondary,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-9df2d6f1bb11f74d527f3ba8,frontend_cache,.vite,windows_secondary,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-4fb36af54f932d92c6e62ee7,frontend_cache,.vite,windows_secondary,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-d95a0c32d037347c0966dd13,frontend_cache,.vite,windows_secondary,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-aa43f6f3ef56507daf0e429c,frontend_cache,.vite,windows_secondary,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-cf78ee0c62a7de80f3e8f5bd,frontend_cache,.vite,windows_secondary,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-47382b7cd9028710442ca44d,frontend_cache,.vite,windows_secondary,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-d56be7c2417dd885249caab0,frontend_cache,.vite,windows_secondary,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-df67efea99e208d1e8ce3153,frontend_cache,.vite,windows_secondary,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-25f2f8c9b3197473b2983e43,frontend_cache,.vite,windows_secondary,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-880962ee08263ff83c675bab,frontend_cache,.vite,windows_secondary,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-16e9766fc35c738a2d7a44ac,frontend_cache,.vite,windows_secondary,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-1390d0f8b177e37c676b3bb3,frontend_cache,.vite,windows_secondary,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-60f1f9bb4cef583076d85746,frontend_cache,.vite,codex_server,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-090bcd95c568ed20a3993fe9,frontend_cache,.vite,codex_server,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-6a631c9ad22ff1c4b37e459f,frontend_cache,.vite,codex_server,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-4e7d2d770f6d5e0f8589be47,frontend_cache,.vite,codex_server,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-64575240dc794dac60ca3427,frontend_cache,.vite,codex_server,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-168bc73f735e2533f43c3c2b,frontend_cache,.vite,codex_server,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-a05fcf1cd526700346b4608e,frontend_cache,.vite,codex_server,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-57bee72eb3d0cf5811e0b336,frontend_cache,.vite,codex_server,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-e0fb23bdcdff26f1a7d481e8,frontend_cache,.vite,codex_server,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-ed8d90c7fc7150c57a57c8b1,frontend_cache,.vite,codex_server,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-b047f6a058cc6d2e69bd2f81,frontend_cache,.vite,codex_server,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-aeb3c9b0406f47891b84f70f,frontend_cache,.vite,codex_server,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-257b27085bafbaf4c0ed0d16,frontend_cache,.vite,codex_server,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-5d4344c7b634ae790b6632a7,frontend_cache,.vite,codex_server,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-e45db95bddbebd425bed22dd,frontend_cache,.vite,codex_server,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-919ca2b1ecf5214f6d958720,frontend_cache,.vite,codex_server,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-5ec5406b3dee115583fe7d2f,frontend_cache,.vite,codex_server,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-f849b44d904c3dc8262cdd5c,frontend_cache,.vite,codex_server,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-2a6ea90384d1003c37e9a43a,frontend_cache,.vite,codex_server,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-b2dd794c6a232ef45d2ef4b2,frontend_cache,.vite,codex_server,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-15d42cb88d1912559156723d,frontend_cache,.vite,codex_server,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-2dcff55cd6852d3964324b51,frontend_cache,.vite,codex_server,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-f75967ccd57936103ea7e45a,frontend_cache,.vite,codex_server,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-4e50467ba0f36b15704090d4,frontend_cache,.vite,codex_server,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-5b9e3bc1d936ae94307b8aea,frontend_cache,.vite,codex_server,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-5dcf995abf7b4996453aef71,frontend_cache,.vite,codex_server,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-ebdca4cfed89d2f4ee196a2d,frontend_cache,.vite,codex_server,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-72b02e4cf94669bd2e0be690,frontend_cache,.vite,codex_server,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-e83991370a9bc728259cd43f,frontend_cache,.vite,codex_server,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-c1352ca4fa62a9b6c55d71b9,frontend_cache,.vite,codex_server,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-49c4ca0ee652f2db1d5cfb0b,frontend_cache,.vite,codex_server,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-0b79129454a64b0c2ba5233f,frontend_cache,.vite,codex_server,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-6261eba1ded692b9490c52e5,frontend_cache,.vite,gitlab_server,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-d79796ef01255ce97707a24d,frontend_cache,.vite,gitlab_server,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-1dbde09f3bb37170e403ba56,frontend_cache,.vite,gitlab_server,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-21a6041cd6e4b141df90f0d7,frontend_cache,.vite,gitlab_server,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-50a153acbc8e531eabd2d088,frontend_cache,.vite,gitlab_server,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-371d4bff56dc3b080f7b76ef,frontend_cache,.vite,gitlab_server,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-c668e7203438c75bd767b0c5,frontend_cache,.vite,gitlab_server,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-ac50d5681d1e60495e60c5bb,frontend_cache,.vite,gitlab_server,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-d38e8d77f4e3291d1f9362bc,frontend_cache,.vite,gitlab_server,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-796581f59430e552381eb868,frontend_cache,.vite,gitlab_server,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-89c45bb6f2f80a8f55fc65e9,frontend_cache,.vite,gitlab_server,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-3cfd0a5dd7a13bf14abb83f6,frontend_cache,.vite,gitlab_server,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-a42353f0f52886d9bd234bc1,frontend_cache,.vite,gitlab_server,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-be903ec238b0ff78f266923f,frontend_cache,.vite,gitlab_server,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-bf7403b925fabecb4d1ba42b,frontend_cache,.vite,gitlab_server,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-dbb1d77e4888b93719527f20,frontend_cache,.vite,gitlab_server,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-ccf449086b1cf2e45c0ccf63,frontend_cache,.vite,gitlab_server,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-10939a14e9ad4f5b967d0231,frontend_cache,.vite,gitlab_server,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-cb36d7dcb182fe4ecd43bdc4,frontend_cache,.vite,gitlab_server,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-6352696f10e38ff4faa500ac,frontend_cache,.vite,gitlab_server,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-5c26d01fa304139900bcef46,frontend_cache,.vite,gitlab_server,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-fcba48b59ed02b4d9bcc6bee,frontend_cache,.vite,gitlab_server,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-201ac0795ec6833ff9e24346,frontend_cache,.vite,gitlab_server,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-091c40aaede0e58e7e1d6bcc,frontend_cache,.vite,gitlab_server,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-ed36634dd48df3dd6a7dbfe0,frontend_cache,.vite,gitlab_server,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-223b1b63159c8e15fb15012a,frontend_cache,.vite,gitlab_server,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-e75b3411c9e76aecd0db8cdc,frontend_cache,.vite,gitlab_server,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-c9b435cc636827661e1efe13,frontend_cache,.vite,gitlab_server,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-bb4d4c5d28abaff6a7c07289,frontend_cache,.vite,gitlab_server,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-3c7b29488d0efca0d11ca40f,frontend_cache,.vite,gitlab_server,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-98fb7f67ee689377512a51b5,frontend_cache,.vite,gitlab_server,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-cc5109da1cd45739a96f2ce5,frontend_cache,.vite,gitlab_server,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-4faca43b1049877cadfdc2fe,coverage_output,coverage,windows_primary,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-176e9ab836555394ee6e5743,coverage_output,coverage,windows_primary,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-a100a8c30ee946766b80ec16,coverage_output,coverage,windows_primary,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-76604ede0fd59eac93239ada,coverage_output,coverage,windows_primary,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-e177d8aed1c64a0b5d7dc260,coverage_output,coverage,windows_primary,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-dc163ba0fe9988b69cae3214,coverage_output,coverage,windows_primary,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-483b259c64b114776bd3d4de,coverage_output,coverage,windows_primary,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-7f6d769ed318bd80706cd236,coverage_output,coverage,windows_primary,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-f63cf780a776c9ac4d0f1fee,coverage_output,coverage,windows_primary,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-0314d34ba020265fced84f29,coverage_output,coverage,windows_primary,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-15c4be9589d43977d3b7f89b,coverage_output,coverage,windows_primary,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-63d9060ad08a518c4fe21c01,coverage_output,coverage,windows_primary,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-d482359428dfe6b22b2ea9ef,coverage_output,coverage,windows_primary,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-82433867896408ff34e61e66,coverage_output,coverage,windows_primary,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-74e31c3e6418f3d678581cee,coverage_output,coverage,windows_primary,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-ba31656e761a0bf635e04b5d,coverage_output,coverage,windows_primary,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-f36a9b114c8dce014596b328,coverage_output,coverage,windows_primary,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-104f28cee3e0a7610d15a46f,coverage_output,coverage,windows_primary,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-85e6baab9337a3ff2db1293c,coverage_output,coverage,windows_primary,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-c3b2360601904807fd0373a5,coverage_output,coverage,windows_primary,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-d48e99dd57a178e36924b6f1,coverage_output,coverage,windows_primary,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-539e46000d0a84bbb4176baa,coverage_output,coverage,windows_primary,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-1ff7180621d8e48958bd4015,coverage_output,coverage,windows_primary,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-6abffff75c129f9cdfa10a3c,coverage_output,coverage,windows_primary,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-0536f00c905126594f43fb06,coverage_output,coverage,windows_primary,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-d7991e00237c9bae5f8f5f01,coverage_output,coverage,windows_primary,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-bd0cfd6723eed08f1c448c20,coverage_output,coverage,windows_primary,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-4d234204e94cb0a99eb2e80d,coverage_output,coverage,windows_primary,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-11938b72a5ad1f4890b904d3,coverage_output,coverage,windows_primary,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-4653a65369e43dbcbcc5e788,coverage_output,coverage,windows_primary,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-3ca741e5554fdc0b580d459f,coverage_output,coverage,windows_primary,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-73117641b835ac2b8a5b9335,coverage_output,coverage,windows_primary,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-4fb01dd972b5f2e70af61c5e,coverage_output,coverage,windows_secondary,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-ef1ea6386eb7f71618bc5863,coverage_output,coverage,windows_secondary,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-8f75ca875355b4436b6b3ca4,coverage_output,coverage,windows_secondary,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-dfb32caeea0ab46c1b694e9c,coverage_output,coverage,windows_secondary,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-da44edde693d82a456825566,coverage_output,coverage,windows_secondary,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-0b5d6ec3993938868c67cc6b,coverage_output,coverage,windows_secondary,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-9978752129733afb531edb96,coverage_output,coverage,windows_secondary,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-3d12b21af2b4b9fc59200ffd,coverage_output,coverage,windows_secondary,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-0de790a3173c01e69fa8434e,coverage_output,coverage,windows_secondary,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-37b3c30137ef83296ae243ae,coverage_output,coverage,windows_secondary,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-60a1979676c449a1b3050801,coverage_output,coverage,windows_secondary,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-e8ebf112a0352d4f46c408f3,coverage_output,coverage,windows_secondary,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-9a07f6bc8a806d7fdbc7d611,coverage_output,coverage,windows_secondary,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-80089f15de0e33f50caac11d,coverage_output,coverage,windows_secondary,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-3dd7d4b3270f78c4288bd404,coverage_output,coverage,windows_secondary,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-1acc59c6e7b41eebf3cf9f15,coverage_output,coverage,windows_secondary,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-426d6a4e29560d4682cd0315,coverage_output,coverage,windows_secondary,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-acf59f1930267abbe0daf747,coverage_output,coverage,windows_secondary,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-cc2adc824e97075baba92d65,coverage_output,coverage,windows_secondary,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-622853af63215ed46efb7908,coverage_output,coverage,windows_secondary,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-4e66d82a57eda6672f1d8c56,coverage_output,coverage,windows_secondary,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-eaa7c2374d11a1be68492e0d,coverage_output,coverage,windows_secondary,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-e6ec561ca0a08d55426d26da,coverage_output,coverage,windows_secondary,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-0171b9f0263a81b5189993eb,coverage_output,coverage,windows_secondary,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-326f3f8151baa727ca89f4c2,coverage_output,coverage,windows_secondary,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-513ecac77c80162bb7cf8322,coverage_output,coverage,windows_secondary,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-90ee44f0abb167c99ae513bc,coverage_output,coverage,windows_secondary,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-910b8ccc7e8cb015719e694e,coverage_output,coverage,windows_secondary,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-7dc0a274fd0171b8b40c35a6,coverage_output,coverage,windows_secondary,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-34e6792514bb8b6e4e7fa361,coverage_output,coverage,windows_secondary,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-a10733e29ddd9c2f5f57c7c4,coverage_output,coverage,windows_secondary,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-e6499cbfd579c5cd463297fd,coverage_output,coverage,windows_secondary,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-a10a7b24927f65013a820e71,coverage_output,coverage,codex_server,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-5d4676cb005e62b69777e87d,coverage_output,coverage,codex_server,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-352743c143241fa2985eb29e,coverage_output,coverage,codex_server,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-66695f91756a86ffd8edf92d,coverage_output,coverage,codex_server,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-52ef8f76dec4fce35c097346,coverage_output,coverage,codex_server,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-5a9916f46a0b6be71ef20417,coverage_output,coverage,codex_server,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-7ee68c3ee28a89e4e455eb70,coverage_output,coverage,codex_server,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-4f5bb0a91809600c98686b19,coverage_output,coverage,codex_server,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-36b51421a502635fe9b133a7,coverage_output,coverage,codex_server,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-a72b2f440f4133fac87da0d7,coverage_output,coverage,codex_server,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-34c4ad313937f8b483247e8a,coverage_output,coverage,codex_server,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-00ef903ddfbec8b77af571fc,coverage_output,coverage,codex_server,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-f2937a7fef38112f35fcabc4,coverage_output,coverage,codex_server,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-0986688287882bc06bc2118e,coverage_output,coverage,codex_server,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-6eb684a93e23d35fad05ab72,coverage_output,coverage,codex_server,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-5d99d983f282b38d465a0fe3,coverage_output,coverage,codex_server,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-08422fbb5a726c74b2194642,coverage_output,coverage,codex_server,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-31010a93579aada4f91f2b85,coverage_output,coverage,codex_server,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-c56635e7732b1bf5788f6c23,coverage_output,coverage,codex_server,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-a785e8f459dd7b93752ffb31,coverage_output,coverage,codex_server,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-98395381cff75b78260f3071,coverage_output,coverage,codex_server,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-1de09087b26c6bc6dadbcde7,coverage_output,coverage,codex_server,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-9100bdc8109330c2c2b80ae9,coverage_output,coverage,codex_server,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-454ca6601a054535ff6aafd2,coverage_output,coverage,codex_server,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-70270626cdea8db5718a4dbb,coverage_output,coverage,codex_server,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-1379befac6a0f6de0917d122,coverage_output,coverage,codex_server,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-811cf7795756c3ba888afc91,coverage_output,coverage,codex_server,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-b1bf2f0df88ba03a7506a6dc,coverage_output,coverage,codex_server,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-24199bada04de7484f9a3a2b,coverage_output,coverage,codex_server,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-c72e08459a56f06d0e3f4968,coverage_output,coverage,codex_server,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-718a387f490a82e3b50b79f5,coverage_output,coverage,codex_server,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-38629087eb475dc6e8860a04,coverage_output,coverage,codex_server,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-0231f07cb2dad49739a3c9d1,coverage_output,coverage,gitlab_server,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-3a4285d5b2a4a797d29d84b0,coverage_output,coverage,gitlab_server,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-e16c54b7b6d48182e3abfeab,coverage_output,coverage,gitlab_server,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-57e5b60bc0693fa64577b23d,coverage_output,coverage,gitlab_server,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-4ec1c330bf7ba019287e35c1,coverage_output,coverage,gitlab_server,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-8154969ced9095b03a9937b3,coverage_output,coverage,gitlab_server,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-c682be1565864c02f69685bd,coverage_output,coverage,gitlab_server,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-2cc5b994175ff5c70705dd53,coverage_output,coverage,gitlab_server,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-7b4dfb59776f285b92d2a672,coverage_output,coverage,gitlab_server,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-3ff197ecfd6c9886bafcd83a,coverage_output,coverage,gitlab_server,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-3ed3c7710a5f408110f351a5,coverage_output,coverage,gitlab_server,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-52c4f35f40dcbad7db2f5b7e,coverage_output,coverage,gitlab_server,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-9af07ed02a0c7b2fae03bdb0,coverage_output,coverage,gitlab_server,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-a4f75fcf72ec306953f5e97c,coverage_output,coverage,gitlab_server,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-c900af9992d4cb1fc379976e,coverage_output,coverage,gitlab_server,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-7144b1d2e308e9e3cde3f98a,coverage_output,coverage,gitlab_server,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-1392053926c7314d6aff35ac,coverage_output,coverage,gitlab_server,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-f9e5096291abcc75071a815b,coverage_output,coverage,gitlab_server,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-c50492e0eefb2a12157a9971,coverage_output,coverage,gitlab_server,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-34154c3ead398fac89518884,coverage_output,coverage,gitlab_server,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-c9311787d2af26275d1feca3,coverage_output,coverage,gitlab_server,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-2568c8b47763f52f1f1c4af8,coverage_output,coverage,gitlab_server,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-5b4ee00b6e1927cf626ad0c1,coverage_output,coverage,gitlab_server,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-156a467308e370c756943764,coverage_output,coverage,gitlab_server,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-f83750a3bb19d50c2317c084,coverage_output,coverage,gitlab_server,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-a1e653a4a53e8febc27948be,coverage_output,coverage,gitlab_server,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-6a07cb2f11046af2a8908833,coverage_output,coverage,gitlab_server,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-25e825424deb2f5696f4e652,coverage_output,coverage,gitlab_server,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-29d6fae25db1cd276fcc29e0,coverage_output,coverage,gitlab_server,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-8b518ae41325a5051c6a0966,coverage_output,coverage,gitlab_server,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-16062b6b36019735b4173fd7,coverage_output,coverage,gitlab_server,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-da890cf72f3634c898bdde75,coverage_output,coverage,gitlab_server,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-68246b7b227eda8692a72f95,test_report,test-results,windows_primary,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-8ceb841a72d21a346cd6ce78,test_report,test-results,windows_primary,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-c6dd5ed50f5c79fa80862068,test_report,test-results,windows_primary,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-a284b1937f64e76c8e81e72c,test_report,test-results,windows_primary,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-90d302ce5b61bc12177ca959,test_report,test-results,windows_primary,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-d98f1e8447686c860b1d200b,test_report,test-results,windows_primary,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-0482e0d09dbc98d29f144fb1,test_report,test-results,windows_primary,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-3cdc5cd22cc45aad7d6f4349,test_report,test-results,windows_primary,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-21fe3e5bb343f7e9d924beaa,test_report,test-results,windows_primary,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-e7e47183ec1cb39bb9337742,test_report,test-results,windows_primary,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-61bbdbf0be8c80d243627dce,test_report,test-results,windows_primary,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-9324fbae677fb917b00fdf8d,test_report,test-results,windows_primary,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-11605980eb87e3f824274832,test_report,test-results,windows_primary,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-18f6063602200cbeecf9bd51,test_report,test-results,windows_primary,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-6ca9fd94edad4c3758b44c1d,test_report,test-results,windows_primary,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-6e740f0793a6d621a4aec595,test_report,test-results,windows_primary,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-74811a6cbb4a4bb17e1ac5a0,test_report,test-results,windows_primary,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-a8d225f62e6e04e9c941eea3,test_report,test-results,windows_primary,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-3b326af48b119c7af8bdf2d7,test_report,test-results,windows_primary,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-24cb055ad3c513d8e1458468,test_report,test-results,windows_primary,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-b3f1cd9a9de2a7ec43fa189b,test_report,test-results,windows_primary,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-b5399dd3a35adf6ad50aa3e0,test_report,test-results,windows_primary,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-d929de0ed28bb689238263b2,test_report,test-results,windows_primary,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-ea64535c60f56e61ddd0708b,test_report,test-results,windows_primary,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-06f881d66f1f8c35e94f5429,test_report,test-results,windows_primary,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-bcdf7ac844621f330a043f5c,test_report,test-results,windows_primary,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-b057563ea9931dba2aff8970,test_report,test-results,windows_primary,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-040f83780c517c3180762a95,test_report,test-results,windows_primary,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-bfb5be9d4535e65a96a1ec9e,test_report,test-results,windows_primary,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-79de0c4373f0a5530995cbb9,test_report,test-results,windows_primary,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-c4208309d96bd9ec5fbf6043,test_report,test-results,windows_primary,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-3d8ee317cc0e2de9d8a81c47,test_report,test-results,windows_primary,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-60ef4f87007f37d9c93bcd87,test_report,test-results,windows_secondary,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-4da6e4dae79434d99dd85e83,test_report,test-results,windows_secondary,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-b656f752904aa525108c697e,test_report,test-results,windows_secondary,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-5e75870da3db3a338acb841b,test_report,test-results,windows_secondary,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-5cdd350008c46209f15a282a,test_report,test-results,windows_secondary,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-16d5dbc202d3b4a920b1aa47,test_report,test-results,windows_secondary,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-691ec6bf099ec535716b5af5,test_report,test-results,windows_secondary,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-8c99dab752d718687551ad4d,test_report,test-results,windows_secondary,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-3d84d9bae7dd0f671d87647f,test_report,test-results,windows_secondary,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-fca9dbc327d2fdc51a97c24d,test_report,test-results,windows_secondary,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-ad7ceb426c98aae62af4402e,test_report,test-results,windows_secondary,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-93f87c233f237e2856eeeffa,test_report,test-results,windows_secondary,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-c7646913cd0d97afac391fea,test_report,test-results,windows_secondary,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-79caf6b4ced8806058c9ed5f,test_report,test-results,windows_secondary,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-44b32b119a458d65c4dd9713,test_report,test-results,windows_secondary,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-da261b154485e332d1ba3baf,test_report,test-results,windows_secondary,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-2ceeb6f61ee3d16bb7410f7c,test_report,test-results,windows_secondary,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-3213a7887d20e9ed069d4a4a,test_report,test-results,windows_secondary,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-ab524882ebf961aab646c07e,test_report,test-results,windows_secondary,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-5c9d3398810907ef9512d951,test_report,test-results,windows_secondary,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-1dbe8c986fdc8769bf6db021,test_report,test-results,windows_secondary,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-ef93a7e39994d95b9c8245d3,test_report,test-results,windows_secondary,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-a334530c28444b674f8b1c0b,test_report,test-results,windows_secondary,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-861e4741b9bc2a408973c766,test_report,test-results,windows_secondary,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-2778215cfc8dde00bdbaebf2,test_report,test-results,windows_secondary,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-b2a0329bc80d1f9557698a60,test_report,test-results,windows_secondary,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-28e6a53205c6ec068b072506,test_report,test-results,windows_secondary,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-b2a5eed0599f015ec418cfc1,test_report,test-results,windows_secondary,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-82e2023246f0d706f229efad,test_report,test-results,windows_secondary,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-e38cc0b606c149e05d920562,test_report,test-results,windows_secondary,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-e1292e80890f285396787125,test_report,test-results,windows_secondary,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-49b4203cc0bdf0b486edc51b,test_report,test-results,windows_secondary,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-bf42b71b59aacad3f80be0d1,test_report,test-results,codex_server,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-39953c2ece9620f73c0779ca,test_report,test-results,codex_server,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-0805e93e898d201f4041f20a,test_report,test-results,codex_server,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-9ecfe5690fd88526088a92e8,test_report,test-results,codex_server,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-f5ae6aa1b262a2fbb866f8ae,test_report,test-results,codex_server,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-7983a28ab677cd322c826223,test_report,test-results,codex_server,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-816ca9f0ab97e52b4a0b0dee,test_report,test-results,codex_server,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-bfc0632a87dd546b2189187a,test_report,test-results,codex_server,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-aa4f5a039ac5807578e0440d,test_report,test-results,codex_server,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-a20d4b795cff1e752c4bb5bd,test_report,test-results,codex_server,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-5accc7e956def9d755eca980,test_report,test-results,codex_server,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-db6ba4f424890562e1de9ff2,test_report,test-results,codex_server,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-4ce9e578e00eb6e0026c5b68,test_report,test-results,codex_server,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-1e69fad3f10c0f7989ee2626,test_report,test-results,codex_server,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-25581fb56d35699b8c324f9c,test_report,test-results,codex_server,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-b54cd30bee2ac47077ccfdb5,test_report,test-results,codex_server,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-65dad6b0b4ccdba77c8ee3df,test_report,test-results,codex_server,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-3a3a753e59d34078188b8245,test_report,test-results,codex_server,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-538a04c1f71ef2a95e8b1d59,test_report,test-results,codex_server,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-a4565331e29741375769565b,test_report,test-results,codex_server,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-66f3aec805b4e02d2a28e48a,test_report,test-results,codex_server,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-a8543163fda1e5d22c458b81,test_report,test-results,codex_server,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-660b4fff73af65d80f432d41,test_report,test-results,codex_server,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-14f55e3aec23090fa6710d65,test_report,test-results,codex_server,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-c843baa06662ee0db4ff2d2d,test_report,test-results,codex_server,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-3ece76fcda4f9a115c9af556,test_report,test-results,codex_server,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-994f51da67567eb58a38dd96,test_report,test-results,codex_server,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-c9a11f043a17b44081abb277,test_report,test-results,codex_server,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-d3168e86efc8938e13d8cbe5,test_report,test-results,codex_server,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-6865e82708fe645182fab08f,test_report,test-results,codex_server,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-2f6b7a29d1ce7fb88b3d8dd5,test_report,test-results,codex_server,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-687d99f674ff3050a40b16d6,test_report,test-results,codex_server,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-9f6f33772402a45208f743ac,test_report,test-results,gitlab_server,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-578b976fea50377f1e1be354,test_report,test-results,gitlab_server,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-61f3414a0d0c32cff3e8e3a0,test_report,test-results,gitlab_server,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-a1c31b9530c6247bb7ec8848,test_report,test-results,gitlab_server,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-8ade5dd543bae75164f6e131,test_report,test-results,gitlab_server,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-0b41d2651f275a3c927dfa8d,test_report,test-results,gitlab_server,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-f4458d06f656361c31f4d129,test_report,test-results,gitlab_server,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-ec9c908de21f9f1fb9a6690a,test_report,test-results,gitlab_server,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-b7efa824eb0f6a25a8bcc7f4,test_report,test-results,gitlab_server,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-8ac5eb74c3b484df2512a149,test_report,test-results,gitlab_server,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-d44f5cafe4e5d1584905e8ed,test_report,test-results,gitlab_server,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-f7636c2b0fa3abd147fcb8cf,test_report,test-results,gitlab_server,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-13f23ee8c6de95e5d5246d2a,test_report,test-results,gitlab_server,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-8a8be0007764221de7d6a4fd,test_report,test-results,gitlab_server,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-0df15deffab3cbed8dfd2c62,test_report,test-results,gitlab_server,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-fe86d0d52baa25bd5c231e52,test_report,test-results,gitlab_server,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-5ab724c5d5dce315cafda6c4,test_report,test-results,gitlab_server,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-d044cc4dcd957688dddf0529,test_report,test-results,gitlab_server,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-d24d6ddbaeeb68b4c7052a06,test_report,test-results,gitlab_server,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-bc5bcaa0d901d5a46c32c01f,test_report,test-results,gitlab_server,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-325461264079534b1863373b,test_report,test-results,gitlab_server,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-9d2b0089ced46f17f2225d7d,test_report,test-results,gitlab_server,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-a9f7054e8525fe87eee8e143,test_report,test-results,gitlab_server,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-69f29d921d70bd14b8ccee42,test_report,test-results,gitlab_server,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-a01d78b0fed9d2cf0d12e284,test_report,test-results,gitlab_server,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-0e95639f3ef64dd3f5a648f6,test_report,test-results,gitlab_server,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-f14c1954acf00112796f3653,test_report,test-results,gitlab_server,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-bf570ca5600f13be8876f810,test_report,test-results,gitlab_server,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-efc4b3ba0de873ac581f6bbe,test_report,test-results,gitlab_server,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-68bb75beb5dd7b51f058019b,test_report,test-results,gitlab_server,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-6dac2cc5ce43973b327608f5,test_report,test-results,gitlab_server,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-9c7ffadf3e9bcd1a650639f9,test_report,test-results,gitlab_server,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-6a866477578792d6003ea832,test_report,playwright-report,windows_primary,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-044d526f1c1a40455986d0a4,test_report,playwright-report,windows_primary,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-b1c8eb2cddd6a0873c93fdb5,test_report,playwright-report,windows_primary,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-8d71218747d27c17b2707334,test_report,playwright-report,windows_primary,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-98bf90b589872c0b68404999,test_report,playwright-report,windows_primary,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-fab8833efe4459584a125f69,test_report,playwright-report,windows_primary,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-fe677fb714875daf8bf36baf,test_report,playwright-report,windows_primary,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-21ccc428c8e59b224d0551fd,test_report,playwright-report,windows_primary,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-a988f212fb7771d4054137ae,test_report,playwright-report,windows_primary,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-a97b0964adc1e4f3e322d97d,test_report,playwright-report,windows_primary,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-14e644aa008c2b05693da0f4,test_report,playwright-report,windows_primary,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-a4b2478baaa84843087be2b7,test_report,playwright-report,windows_primary,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-b03085214a7e18cc56906834,test_report,playwright-report,windows_primary,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-f4ece9ceae88dab2474e5bd8,test_report,playwright-report,windows_primary,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-542e3bc3be16360f367c45f5,test_report,playwright-report,windows_primary,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-f1e878cd89dd202acba45c05,test_report,playwright-report,windows_primary,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-272db184fa1ebece5ff8e466,test_report,playwright-report,windows_primary,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-2cc20ec093c53a91ba350b64,test_report,playwright-report,windows_primary,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-198589486fca508d9f9800eb,test_report,playwright-report,windows_primary,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-5bb0ca568638abdac370f4b6,test_report,playwright-report,windows_primary,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-64e9623d68930de4357f12fd,test_report,playwright-report,windows_primary,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-47ea95b46a338dc27647460b,test_report,playwright-report,windows_primary,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-858b74132de3f69a4a30edf1,test_report,playwright-report,windows_primary,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-b34ff9acb78bf561f514532e,test_report,playwright-report,windows_primary,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-16d54b79d9736d66f098b9b6,test_report,playwright-report,windows_primary,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-14038863ff74547136134bf2,test_report,playwright-report,windows_primary,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-d019026dd08a396ed2dab435,test_report,playwright-report,windows_primary,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-d6be0fc294a4ed8db26ef6e2,test_report,playwright-report,windows_primary,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-e1999024688241974da558a7,test_report,playwright-report,windows_primary,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-e8ccfa36b5368cb4acb9c54a,test_report,playwright-report,windows_primary,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-733c87baa942b00dc32e1d80,test_report,playwright-report,windows_primary,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-1b935c3bb305e2c7edb30d48,test_report,playwright-report,windows_primary,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-babe7ac8ec704642dfe89e19,test_report,playwright-report,windows_secondary,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-060ff87cfd6c2feec6476a80,test_report,playwright-report,windows_secondary,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-d405e0c401b961a8ec3a06ad,test_report,playwright-report,windows_secondary,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-f13bb17977c9b66b74147bf3,test_report,playwright-report,windows_secondary,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-dd045e952ee856c107e3b561,test_report,playwright-report,windows_secondary,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-df60ac14840c3e1140d51373,test_report,playwright-report,windows_secondary,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-bc10c0a310718fc6aecbbcdf,test_report,playwright-report,windows_secondary,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-3d4f08ddbf6ff68bc4f96507,test_report,playwright-report,windows_secondary,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-78a8b303ce002874cce26224,test_report,playwright-report,windows_secondary,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-8b582576fe5ae6d46b59ba6e,test_report,playwright-report,windows_secondary,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-b5be727937a3ae0330ee19f4,test_report,playwright-report,windows_secondary,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-d5b1d8b8a599d29e92c26ab2,test_report,playwright-report,windows_secondary,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-d85999eb6fcceb83bf1f9f0a,test_report,playwright-report,windows_secondary,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-6ec305277a330a3ce2b2275b,test_report,playwright-report,windows_secondary,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-eb58c0f1942f625976715e70,test_report,playwright-report,windows_secondary,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-a5e97e79ccb0411fb99ead8a,test_report,playwright-report,windows_secondary,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-aa5f17a84b8cad63886df218,test_report,playwright-report,windows_secondary,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-b9dc54de37e77cde181f5db4,test_report,playwright-report,windows_secondary,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-c40efb43702fc4069c488077,test_report,playwright-report,windows_secondary,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-13b49352e4c9a33093e3e655,test_report,playwright-report,windows_secondary,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-b13976d3fdea0e3378b78885,test_report,playwright-report,windows_secondary,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-b2384797dfe5fdbc2e70d0a3,test_report,playwright-report,windows_secondary,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-4e1de33a41155608725e2a42,test_report,playwright-report,windows_secondary,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-c71779e996b7327f6188852e,test_report,playwright-report,windows_secondary,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-8cac4514925284171a5e855a,test_report,playwright-report,windows_secondary,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-a1d180e76aa483bc04c082a4,test_report,playwright-report,windows_secondary,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-dffbe69440ed3ab6d308f238,test_report,playwright-report,windows_secondary,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-de8acb1d9ecd69f84a3723d2,test_report,playwright-report,windows_secondary,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-e152f43d674aefc99cad7d51,test_report,playwright-report,windows_secondary,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-8ac1f90d91903e9f11bbd9e9,test_report,playwright-report,windows_secondary,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-4ce0094830b39ea9aa8739cb,test_report,playwright-report,windows_secondary,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-dfee2dec84ca82d3143efa99,test_report,playwright-report,windows_secondary,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-d33a7f7273c5834f1d9e8307,test_report,playwright-report,codex_server,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-0a425f81aa9fd1fac680fcc2,test_report,playwright-report,codex_server,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-e1eb036686cd119d83f9aa32,test_report,playwright-report,codex_server,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-b8824b4b271c9af11b8ceca1,test_report,playwright-report,codex_server,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-bce5c528433148a6b995c88a,test_report,playwright-report,codex_server,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-b1d269ef406de9022df098c3,test_report,playwright-report,codex_server,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-fbfdfbcdc45f46ec458b37ce,test_report,playwright-report,codex_server,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-735c47bd8ee5888ab4ce2f28,test_report,playwright-report,codex_server,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-2e3e7212af647a4b3cf71314,test_report,playwright-report,codex_server,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-2720a5dac343bd57b84bb1a7,test_report,playwright-report,codex_server,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-e4d534948a0735f9a68ce2e0,test_report,playwright-report,codex_server,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-8f12075b9c8f0deea2ddd5ee,test_report,playwright-report,codex_server,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-61b4845b08ebc6ed364b3fac,test_report,playwright-report,codex_server,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-ab74934225f02b3c71f8b0fc,test_report,playwright-report,codex_server,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-37b2e9c9db20a5f03bb7d6c5,test_report,playwright-report,codex_server,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-285ee9bcfcb91655a95d03c4,test_report,playwright-report,codex_server,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-d5b408272ff47e114c0a1a22,test_report,playwright-report,codex_server,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-86ced0e69e38169ec2cc991d,test_report,playwright-report,codex_server,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-48a55fe646580e8ae3c5b116,test_report,playwright-report,codex_server,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-3650ec5ebf86b5ad901a00c7,test_report,playwright-report,codex_server,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-72ca7c7976b88953c3cbf7ce,test_report,playwright-report,codex_server,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-29be9dca6ce4f2665a50fb7e,test_report,playwright-report,codex_server,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-81fdd7c3895f2cc3a1c402d3,test_report,playwright-report,codex_server,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-337d5cd5bdd6c129474a65fa,test_report,playwright-report,codex_server,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-d938983194e394d01ada4649,test_report,playwright-report,codex_server,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-a0b0ad1fe287e76e4d89a2e9,test_report,playwright-report,codex_server,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-ddf0bb659cbf212b18cfb799,test_report,playwright-report,codex_server,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-bde33cc92b527cdcea43841c,test_report,playwright-report,codex_server,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-f623ec2bd083bb1e70abb7ef,test_report,playwright-report,codex_server,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-b09ff11137b7a6ae7d380bb5,test_report,playwright-report,codex_server,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-232d30a69652c810ce5e5829,test_report,playwright-report,codex_server,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-5ca202449fac2d971f402e54,test_report,playwright-report,codex_server,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-9e7f8f9020dde960ea206646,test_report,playwright-report,gitlab_server,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-da6983892fd9c69a36cd6704,test_report,playwright-report,gitlab_server,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-cc87264945363564b262553c,test_report,playwright-report,gitlab_server,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-1e74bb6d8591bb5052e342c5,test_report,playwright-report,gitlab_server,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-3dd6a31f642efc24b0ef143b,test_report,playwright-report,gitlab_server,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-bbf38cedfb7990eddc7eb69f,test_report,playwright-report,gitlab_server,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-e931668c51a159fb9575d50f,test_report,playwright-report,gitlab_server,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-02248ff8a07f06ec473b2f4e,test_report,playwright-report,gitlab_server,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-73f4f53451e3eca40605fa49,test_report,playwright-report,gitlab_server,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-3f92a1b1aea3e2c825100934,test_report,playwright-report,gitlab_server,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-d3c3d7b730710626526f7abc,test_report,playwright-report,gitlab_server,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-f855052a4e8652217f5441b3,test_report,playwright-report,gitlab_server,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-34f6616e283f323fdcfc5e4d,test_report,playwright-report,gitlab_server,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-1da8b541f1f34278968956ed,test_report,playwright-report,gitlab_server,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-8f4455df78e3a64f39d1d071,test_report,playwright-report,gitlab_server,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-f22975a6d6ceee54acde0c13,test_report,playwright-report,gitlab_server,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-ae3ba69ce05daf2d5ea6d055,test_report,playwright-report,gitlab_server,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-51b0d6a7d0d85577a0429aa1,test_report,playwright-report,gitlab_server,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-91b34572f9324fb10fd2f67e,test_report,playwright-report,gitlab_server,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-64e99b554ef9b4ae3eae9974,test_report,playwright-report,gitlab_server,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-892f65de3e30093e445582d8,test_report,playwright-report,gitlab_server,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-5326804353736113cad1357d,test_report,playwright-report,gitlab_server,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-74410befde79db6d4ec143b1,test_report,playwright-report,gitlab_server,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-dea74301ceb132cb99800365,test_report,playwright-report,gitlab_server,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-0288374c8b60b28ed27ed1c2,test_report,playwright-report,gitlab_server,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-5cf727b04f6d52bfe947fd51,test_report,playwright-report,gitlab_server,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-bb054e9c3184efd1faf05910,test_report,playwright-report,gitlab_server,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-cbbb104bc4a3da2049c01095,test_report,playwright-report,gitlab_server,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-81d64431de5f231f46538f3e,test_report,playwright-report,gitlab_server,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-eecf5cb269d7bc183ba19ce6,test_report,playwright-report,gitlab_server,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-0093f80354548a8e7077ee6d,test_report,playwright-report,gitlab_server,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-81ae568170b79420b486f133,test_report,playwright-report,gitlab_server,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-bc434626978e58c1119c4d54,test_report,blob-report,windows_primary,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-640be7b5a3a8ddf039994eb3,test_report,blob-report,windows_primary,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-5a677d0de6062753caf20a51,test_report,blob-report,windows_primary,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-2b86cdc1c6ee1f27166fad86,test_report,blob-report,windows_primary,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-5431c615c58fca4605917d41,test_report,blob-report,windows_primary,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-2795c7b2ee2cb4a4be0543dd,test_report,blob-report,windows_primary,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-54d9c40a64598cca3f440ba1,test_report,blob-report,windows_primary,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-1c2ecc59e50657628c5928f9,test_report,blob-report,windows_primary,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-8b970ec0dbfbf52fdf69aa20,test_report,blob-report,windows_primary,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-f41a86b2b97d8b7b6c4fc930,test_report,blob-report,windows_primary,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-f55285930b129b24d88fac36,test_report,blob-report,windows_primary,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-7b86ad53677f1c0367d4606b,test_report,blob-report,windows_primary,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-ecfe85c094c5f72103979d7e,test_report,blob-report,windows_primary,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-ea318ac224237e291ef704d2,test_report,blob-report,windows_primary,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-ead36d7b4f1388e1f1633f6d,test_report,blob-report,windows_primary,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-f9a7a28d35f09396cda0cb28,test_report,blob-report,windows_primary,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-b22c5a1336440050265efd55,test_report,blob-report,windows_primary,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-389020dbfe96569740fd9619,test_report,blob-report,windows_primary,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-57ea3e82bc236dae74730907,test_report,blob-report,windows_primary,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-34ca602989639814c4c9840d,test_report,blob-report,windows_primary,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-528712d30c348b19ce61aa64,test_report,blob-report,windows_primary,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-92a0886d72db4483107dc126,test_report,blob-report,windows_primary,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-5dfef590c17099c8f9213e62,test_report,blob-report,windows_primary,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-6134b645b79d72f0589c6b8c,test_report,blob-report,windows_primary,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-71a286059577b5f82511f652,test_report,blob-report,windows_primary,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-a8605b8f1e4bad2310607a99,test_report,blob-report,windows_primary,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-76ad6e5ade5ae7f07ab9510f,test_report,blob-report,windows_primary,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-9273766742fc873c6b15227e,test_report,blob-report,windows_primary,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-22449e756098e1da90e83e13,test_report,blob-report,windows_primary,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-075241d7d25631c1a3a3fd84,test_report,blob-report,windows_primary,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-0869bb4a6ee06c0f3df9ff27,test_report,blob-report,windows_primary,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-4182c33f2d2cfa862ebb9cef,test_report,blob-report,windows_primary,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-af29e5ecc05b9fed1db83866,test_report,blob-report,windows_secondary,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-3703a4d4ea15646273939863,test_report,blob-report,windows_secondary,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-3855ee0058cedc32c5eb3e78,test_report,blob-report,windows_secondary,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-305c1ea765ad82be9cbc15e3,test_report,blob-report,windows_secondary,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-d81a2f284ed713148e355454,test_report,blob-report,windows_secondary,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-419dbf9d75be1ef6dddaaf09,test_report,blob-report,windows_secondary,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-87227464238344d75fd1be55,test_report,blob-report,windows_secondary,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-cfdc200d6a18a0aa4138d6fa,test_report,blob-report,windows_secondary,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-62c425d0b97585f6daa28b98,test_report,blob-report,windows_secondary,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-727b949fb7ddffaeb9e075d5,test_report,blob-report,windows_secondary,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-7aa93ab19b75865730953e89,test_report,blob-report,windows_secondary,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-9893541b56d212e4c6d7fc74,test_report,blob-report,windows_secondary,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-0c25c881a4052a034b453077,test_report,blob-report,windows_secondary,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-8192ca2bac6f00948d744f41,test_report,blob-report,windows_secondary,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-e57b590cd48a278b0f927625,test_report,blob-report,windows_secondary,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-2f1dc916197c4522b269657a,test_report,blob-report,windows_secondary,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-6a7f81799d06e549835eddfb,test_report,blob-report,windows_secondary,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-e2e60b3181d67465d52f5567,test_report,blob-report,windows_secondary,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-f36a971dc7ff2707a60ef71b,test_report,blob-report,windows_secondary,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-ba6cc90699c255d9f9b942f6,test_report,blob-report,windows_secondary,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-45129a27a27010e6eff76b2b,test_report,blob-report,windows_secondary,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-ecd98fb855913504f967c2f4,test_report,blob-report,windows_secondary,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-3d0e079bcd52f440bda6d353,test_report,blob-report,windows_secondary,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-6f3ca644fdcd75f95ec6e4fa,test_report,blob-report,windows_secondary,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-e66924a882742df218da7381,test_report,blob-report,windows_secondary,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-42023fb9e1fcc9a56be232a8,test_report,blob-report,windows_secondary,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-510dca2c023eba6a24cde91b,test_report,blob-report,windows_secondary,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-d7cefa193084a218676e0214,test_report,blob-report,windows_secondary,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-8dca1829f5dbb16870df7e44,test_report,blob-report,windows_secondary,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-d52a5afd4984c0064f33b9ac,test_report,blob-report,windows_secondary,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-bcd8bd92e17399122a57ea4d,test_report,blob-report,windows_secondary,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-ba5a34351bb364d6f9e9f30e,test_report,blob-report,windows_secondary,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-dd3eeed7759085cf8e7ed3f9,test_report,blob-report,codex_server,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-70a169ca4801d091cfb77e0b,test_report,blob-report,codex_server,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-649215b2b7a0571e051a57b0,test_report,blob-report,codex_server,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-91e8a39a851fe82e441b57b4,test_report,blob-report,codex_server,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-50195bcb6470452a58e065ae,test_report,blob-report,codex_server,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-72d6759ed5529001fd3f116f,test_report,blob-report,codex_server,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-e7137a7e960936ec21b7116a,test_report,blob-report,codex_server,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-696708785d1b58c599bdf9e1,test_report,blob-report,codex_server,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-17037a3ad5f14974d334c89f,test_report,blob-report,codex_server,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-aa14738e51fd13519153fb15,test_report,blob-report,codex_server,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-3908cef34818fe80e5b3cc6b,test_report,blob-report,codex_server,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-2f25a100226c6e6a618a7580,test_report,blob-report,codex_server,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-5d403ad6882c68d73dfb2f89,test_report,blob-report,codex_server,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-c617db5f5789c4926b46e2bd,test_report,blob-report,codex_server,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-e3f7fa47a9cb4051a31b367c,test_report,blob-report,codex_server,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-36b8a790ac4261dbebf2b52f,test_report,blob-report,codex_server,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-c9921ce0ef225cc06c68fe70,test_report,blob-report,codex_server,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-d16ca0ff0986059b7af62bb3,test_report,blob-report,codex_server,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-2670a79be040b743760cd506,test_report,blob-report,codex_server,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-3c0996efd00b01b00a622c76,test_report,blob-report,codex_server,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-08182e2675030aae7f7bef81,test_report,blob-report,codex_server,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-756e519a29865b97b9dd0c79,test_report,blob-report,codex_server,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-eafaa4b382ecbb86afa6d0ec,test_report,blob-report,codex_server,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-a1675def565b76d0e34e799f,test_report,blob-report,codex_server,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-97e33a8c66628273365b27fe,test_report,blob-report,codex_server,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-f0ff34d90136e514e1363f03,test_report,blob-report,codex_server,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-ca0e3c051cdb597f716e3564,test_report,blob-report,codex_server,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-06127a4a5a464fbb7daa5629,test_report,blob-report,codex_server,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-516c3e4c8425e67db0674f7f,test_report,blob-report,codex_server,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-2347fbc1fd56bad5c2e35106,test_report,blob-report,codex_server,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-3ee8c96bcc9ad3c498e4617c,test_report,blob-report,codex_server,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-fb0813d83b56f3ce1e5ab75e,test_report,blob-report,codex_server,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-805b1678ad9c387dfacaeda6,test_report,blob-report,gitlab_server,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-ed53df64459131265335da09,test_report,blob-report,gitlab_server,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-e1db00063130fe19d257fa91,test_report,blob-report,gitlab_server,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-1df6cba1e16c20364877b8e3,test_report,blob-report,gitlab_server,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-66206559f253199c8af8cb77,test_report,blob-report,gitlab_server,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-2181d5387a2ad692abf15aaa,test_report,blob-report,gitlab_server,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-d682dfff5e6d1d75d4e827f6,test_report,blob-report,gitlab_server,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-60b611fb091704831dd21331,test_report,blob-report,gitlab_server,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-81adc98a2da783477fff9a66,test_report,blob-report,gitlab_server,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-7d1fc346d9d038570f08d4fd,test_report,blob-report,gitlab_server,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-51023e43f6841b3f6c8ceb46,test_report,blob-report,gitlab_server,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-a7603d1206187eb91f2a7bd9,test_report,blob-report,gitlab_server,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-431f0b2fb4d2b959210f22a9,test_report,blob-report,gitlab_server,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-d9b234b38acae500574f2a49,test_report,blob-report,gitlab_server,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-97194689633205f7811882b6,test_report,blob-report,gitlab_server,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-b789039aba682db90ef976e5,test_report,blob-report,gitlab_server,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-024580026afa641511b00820,test_report,blob-report,gitlab_server,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-f87b94b60328ec019d9b4d28,test_report,blob-report,gitlab_server,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-64e776f1213e5edc9e45969c,test_report,blob-report,gitlab_server,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-78f2f398a407cc7bb5a8318a,test_report,blob-report,gitlab_server,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-1bae1e410feb4330a77a6788,test_report,blob-report,gitlab_server,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-2ddeb20c379ea2e37905cdb2,test_report,blob-report,gitlab_server,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-75e8e29e1c086fd2a531c9ec,test_report,blob-report,gitlab_server,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-113b0d6648d3e2d46ff7ff02,test_report,blob-report,gitlab_server,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-aa4838322dc6400286b1e128,test_report,blob-report,gitlab_server,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-a27c6199585aa25420eeb89d,test_report,blob-report,gitlab_server,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-1f895752370be318a3fb76ce,test_report,blob-report,gitlab_server,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-4907debfb9155a5d0657a5b9,test_report,blob-report,gitlab_server,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-48b1d02369957055da09c25c,test_report,blob-report,gitlab_server,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-48f3c181af6c3365b95ab0c5,test_report,blob-report,gitlab_server,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-85cef7b199e26959c7c62613,test_report,blob-report,gitlab_server,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-06851b2e008356836ac19077,test_report,blob-report,gitlab_server,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-de43c096a545ca938dd2c8a7,log_output,logs,windows_primary,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-a29e229867d83801f8616c08,log_output,logs,windows_primary,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-6d8226eeb3e0052a8f825009,log_output,logs,windows_primary,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-50d5336a02c9d5d469637c44,log_output,logs,windows_primary,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-0806c188ee6ba69f17e2ee5a,log_output,logs,windows_primary,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-8186eb786c8dc868a2b91ef8,log_output,logs,windows_primary,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-415582c29e153ddf474f56a8,log_output,logs,windows_primary,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-59ae932334aa94878735d10b,log_output,logs,windows_primary,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-949107f791f701cef5d935db,log_output,logs,windows_primary,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-29b3e3e0be655509275eb36f,log_output,logs,windows_primary,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-de146a1d30149b58ccd5265b,log_output,logs,windows_primary,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-e47b5aea5365eecfa1adb30d,log_output,logs,windows_primary,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-88f554179e150a4d52c792d1,log_output,logs,windows_primary,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-bd75b39a3f0b2510ffc954da,log_output,logs,windows_primary,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-b62368429bc9fc8a58b0758f,log_output,logs,windows_primary,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-08469cdf7ba2f663d4e909cb,log_output,logs,windows_primary,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-023732f9f9424541a921ef79,log_output,logs,windows_primary,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-5df5c79186e583909c387b0c,log_output,logs,windows_primary,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-d0876efaab5d20a03b875063,log_output,logs,windows_primary,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-ffbb13282f6505b8cfb8f03e,log_output,logs,windows_primary,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-599f95e9cf847a83de1b8669,log_output,logs,windows_primary,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-37adcf3cbb57894dacaa785d,log_output,logs,windows_primary,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-a0a2e687b82ca5cf5d800eee,log_output,logs,windows_primary,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-71854a9cfe3d1a413f583822,log_output,logs,windows_primary,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-403b57e5c88fa8dfc325e5ca,log_output,logs,windows_primary,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-c5f6d8e2f124f137e06f384d,log_output,logs,windows_primary,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-3d4e2d4a561182ca4296b67e,log_output,logs,windows_primary,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-06a298149440dca62e0ae892,log_output,logs,windows_primary,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-4857b457a64c102faa65c3b1,log_output,logs,windows_primary,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-3703155124b37f98ce8b60f8,log_output,logs,windows_primary,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-7bee560a0e816bb3ef442d6e,log_output,logs,windows_primary,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-91fc435a4aa203b3ceb3789c,log_output,logs,windows_primary,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-77215ee5bef390684c16611b,log_output,logs,windows_secondary,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-494a77ea5bb5d70cc93be7f1,log_output,logs,windows_secondary,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-c9aac5a74c137633c23e1496,log_output,logs,windows_secondary,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-e08f5d822774da77e005d330,log_output,logs,windows_secondary,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-2ae6f149e34cf030a8180dff,log_output,logs,windows_secondary,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-4716cd7da359a339f0dce6d2,log_output,logs,windows_secondary,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-e2171cf787b77201ea017b17,log_output,logs,windows_secondary,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-64780cb02cc2283189fde383,log_output,logs,windows_secondary,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-bc7cb76ac657a1e94025e48a,log_output,logs,windows_secondary,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-eed920ec6ffa81b88131ef2f,log_output,logs,windows_secondary,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-8577457aeaa6959961295144,log_output,logs,windows_secondary,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-b3b2984360177c23a4be50fe,log_output,logs,windows_secondary,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-b4bfeb235caf83777f8906c2,log_output,logs,windows_secondary,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-442b4a83c13ee09caf393241,log_output,logs,windows_secondary,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-c2eaf2b63cd0151fc7a9fd4a,log_output,logs,windows_secondary,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-0f4b9707b3410cf3568f2130,log_output,logs,windows_secondary,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-49ee119844af234b7527dfc4,log_output,logs,windows_secondary,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-ef34ab995d5ebc943ed74664,log_output,logs,windows_secondary,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-3c72f16b5ebd78a6c109fb29,log_output,logs,windows_secondary,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-0e324139119c427eaaa8e8d1,log_output,logs,windows_secondary,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-10272482d4b956e681a14497,log_output,logs,windows_secondary,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-021477398767bcafcf83531a,log_output,logs,windows_secondary,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-4055067de632dfdc58a88acf,log_output,logs,windows_secondary,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-4302349a2b05288f1e17cde6,log_output,logs,windows_secondary,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-e8c6c4c3b2af7f65c6d805a0,log_output,logs,windows_secondary,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-b138783918176cba943a419e,log_output,logs,windows_secondary,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-92bcd2fabbcb13e57ad5ff86,log_output,logs,windows_secondary,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-9a80bd202e05f74f584047c1,log_output,logs,windows_secondary,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-fd297dea859245c69e169abd,log_output,logs,windows_secondary,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-8461b2d06e7803c7aab8da32,log_output,logs,windows_secondary,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-efaf13fae99dd78d0af897fb,log_output,logs,windows_secondary,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-044b1a9e107be3a403482c40,log_output,logs,windows_secondary,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-8245e70cfd2327a77d2afce6,log_output,logs,codex_server,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-4c265a1e94788151d0c7be0e,log_output,logs,codex_server,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-ab57d92b061c7aa03a3a05c6,log_output,logs,codex_server,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-ec2561644e0cc9ed6ca8cc60,log_output,logs,codex_server,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-65dae66cce9824fc08d7a176,log_output,logs,codex_server,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-cf15a9e6a0b19a2f85f77ca1,log_output,logs,codex_server,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-85a96c5d8db9c0e15725efec,log_output,logs,codex_server,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-21e108085fd7e04584244626,log_output,logs,codex_server,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-11b99d8eae4b9ec05a269370,log_output,logs,codex_server,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-97fb1de21daafde0bdfc43f4,log_output,logs,codex_server,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-514e0ea0ec288fee77a5964a,log_output,logs,codex_server,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-96ce946cf2e7666b8df4df1e,log_output,logs,codex_server,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-d9ff1455621c9dd41e85ac83,log_output,logs,codex_server,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-2de8b1a3609ac55ba31a38d5,log_output,logs,codex_server,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-9fb7be3da2dc39e1445d9249,log_output,logs,codex_server,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-8a91c3732fa89fd97c7b92c6,log_output,logs,codex_server,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-f07a6bd01f44f8e4c41e5926,log_output,logs,codex_server,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-660f1cfe3d6782a14d14c33e,log_output,logs,codex_server,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-a4fa5b3c013e301b5c14a91c,log_output,logs,codex_server,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-0be5caf9ccc3482973810099,log_output,logs,codex_server,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-866974963f37c9e25ec8c4a1,log_output,logs,codex_server,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-63af20b760582174b079b844,log_output,logs,codex_server,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-f74cf17195ccad96912b397b,log_output,logs,codex_server,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-a8edfc1e3746c7caa6555500,log_output,logs,codex_server,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-d4a5d3721b63d8d2628eb772,log_output,logs,codex_server,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-aa20df07abee7826d40720ee,log_output,logs,codex_server,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-2d1c812c013a7216a40840c0,log_output,logs,codex_server,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-478ddba91e69279d7853f3f6,log_output,logs,codex_server,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-6c29e36d03361cfc5d5614a0,log_output,logs,codex_server,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-8ffd6e5a54a30fae7c21fe61,log_output,logs,codex_server,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-c69253a44b79fac1528b8016,log_output,logs,codex_server,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-2da89dd0f72bfe4a4baddb22,log_output,logs,codex_server,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-931d0b21a1d4fd5435ce1e82,log_output,logs,gitlab_server,inspect,none,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-24423fb1f95962644fa03c30,log_output,logs,gitlab_server,inspect,not_found,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-ebeefc69a9ae7090581b899e,log_output,logs,gitlab_server,inspect,permission_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-ffe6d464eb61bfeff872abce,log_output,logs,gitlab_server,inspect,directory_not_empty,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-f0f1076f39de814e39ed62ff,log_output,logs,gitlab_server,inspect,file_locked,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-0094b0569e88c487b1d25e8b,log_output,logs,gitlab_server,inspect,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-5fb47fdcc71d2eadd2d127e5,log_output,logs,gitlab_server,inspect,central_write_denied,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-773f7dd7534cda814fcab41a,log_output,logs,gitlab_server,inspect,unknown,record_only,verify_absent | write_status_artifact,no,modo inspecao nunca apaga artefato,registrar footprint e executar apply apenas no fechamento +workspace-hygiene-policy-a48fcf658c526ee090194702,log_output,logs,gitlab_server,apply,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-78d8e17584859e552aa64939,log_output,logs,gitlab_server,apply,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-22186de7da585a93c2e4dbf1,log_output,logs,gitlab_server,apply,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-d7b26e881b9dd6163bd29064,log_output,logs,gitlab_server,apply,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-da2629bbb896db6c0e7816c4,log_output,logs,gitlab_server,apply,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-9c4082195571622b8519a592,log_output,logs,gitlab_server,apply,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-abbe368647f0cc271fc583bc,log_output,logs,gitlab_server,apply,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-801686837cdd0efdf8535b28,log_output,logs,gitlab_server,apply,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-ec3a743bc5c2c4f12a6cc995,log_output,logs,gitlab_server,closeout,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-c524e34ee0f3c57150236ed1,log_output,logs,gitlab_server,closeout,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-665d598d83d1644834523c28,log_output,logs,gitlab_server,closeout,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-0507f35de9d7af5e4682ccea,log_output,logs,gitlab_server,closeout,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-f39203fcf48d40c0fde39873,log_output,logs,gitlab_server,closeout,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-d82c118f638098b60fcc922f,log_output,logs,gitlab_server,closeout,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-6b7b68c69e4f39a86db00f38,log_output,logs,gitlab_server,closeout,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-a8dd08171301be9e76ea99eb,log_output,logs,gitlab_server,closeout,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada +workspace-hygiene-policy-f594ecaf402883094b519c30,log_output,logs,gitlab_server,central_record,none,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-65f598fb2fc389796f8c94cd,log_output,logs,gitlab_server,central_record,not_found,pass,verify_absent,yes,artefato ausente ou removivel por limpeza local aprovada,manter ausente e registrar status +workspace-hygiene-policy-10f38167b6478d2843e53754,log_output,logs,gitlab_server,central_record,permission_denied,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-8fb3249aacaa716aa7a781bb,log_output,logs,gitlab_server,central_record,directory_not_empty,retain_with_evidence,best_effort_delete | continue_after_child_error | write_status_artifact,yes,diretorio ainda contem filho retido por erro anterior,reduzir conteudo acessivel e registrar filhos retidos +workspace-hygiene-policy-87206ad2d906a5c7931801c1,log_output,logs,gitlab_server,central_record,file_locked,owner_action_required,best_effort_delete | continue_after_child_error | escalate_owner | record_acl_exception,yes,ACL ou processo externo reteve caminho depois de remover filhos acessiveis,registrar caminho retido e solicitar owner autorizado +workspace-hygiene-policy-a9220bd64ef925c8035d7753,log_output,logs,gitlab_server,central_record,unsafe_path,block_unsafe,block_before_write | write_status_artifact,no,path calculado sai do project_root ou cruza boundary de volume,bloquear antes de qualquer escrita e registrar evidencia +workspace-hygiene-policy-5ed8e91cdd1948866fa1797b,log_output,logs,gitlab_server,central_record,central_write_denied,retain_with_evidence,write_status_artifact | update_semantic_sql,no,"pasta central recusou escrita, mas projeto real deve registrar status",manter fallback no projeto real e registrar pendencia central +workspace-hygiene-policy-25380e414006c8fcea2a80ae,log_output,logs,gitlab_server,central_record,unknown,retain_with_evidence,write_status_artifact,no,erro desconhecido deve ser evidenciado antes de nova tentativa,registrar erro bruto redigido e reavaliar proxima rodada diff --git a/matrizes/workspace-hygiene-targets.csv b/matrizes/workspace-hygiene-targets.csv index 90fab97..3f77b71 100644 --- a/matrizes/workspace-hygiene-targets.csv +++ b/matrizes/workspace-hygiene-targets.csv @@ -1,3 +1,3 @@ target_id,path,action,status,applied,deleted,exists_after,children_before,bytes_before,error,note -python-test-temp,G:\_codex-git\tudo-para-ia-mais-humana\.test-tmp,delete_directory,blocked,yes,no,yes,3052,68130347,PermissionError: [WinError 5] Acesso negado: 'G:\\_codex-git\\tudo-para-ia-mais-humana\\.test-tmp\\tmpnk6r4sdb',artifact retained by ACL or filesystem lock +python-test-temp,G:\_codex-git\tudo-para-ia-mais-humana\.test-tmp,delete_directory,blocked,yes,no,yes,1186,10279,PermissionError: [WinError 5] Acesso negado: 'G:\\_codex-git\\tudo-para-ia-mais-humana\\.test-tmp\\tmpnk6r4sdb'; PermissionError: [WinError 5] Acesso negado: 'G:\\_codex-git\\tudo-para-ia-mais-humana\\.test-tmp\\tmpu13bzfhr'; OSError: [WinError 145] A pasta não está vazia: 'G:\\_codex-git\\tudo-para-ia-mais-humana\\.test-tmp',artifact retained by ACL or filesystem lock node-dependencies,G:\_codex-git\tudo-para-ia-mais-humana\node_modules,verify_absent,not_found,no,no,no,0,0,,target already absent diff --git a/src/mais_humana/cli.py b/src/mais_humana/cli.py index b9a76bb..a8a9831 100644 --- a/src/mais_humana/cli.py +++ b/src/mais_humana/cli.py @@ -52,6 +52,7 @@ from .scanner import environment_summary, scan_ecosystem from .storage import table_counts from .targeted_sync_audit import run_targeted_sync_audit from .workspace_hygiene import run_workspace_hygiene +from .workspace_hygiene_policy import policy_payload, run_hygiene_policy def build_parser() -> argparse.ArgumentParser: @@ -126,6 +127,10 @@ def build_parser() -> argparse.ArgumentParser: hygiene.add_argument("--project-root", default="G:/_codex-git/tudo-para-ia-mais-humana") hygiene.add_argument("--central-platform-folder", default="") hygiene.add_argument("--apply", action="store_true") + hygiene_policy = sub.add_parser("workspace-hygiene-policy", help="Write executable workspace cleanup and ACL retention policy.") + hygiene_policy.add_argument("--project-root", default="G:/_codex-git/tudo-para-ia-mais-humana") + hygiene_policy.add_argument("--no-generated", action="store_true") + hygiene_policy.add_argument("--limit", type=int, default=40) sync_audit = sub.add_parser("targeted-sync-audit", help="Write safe Git synchronization audit for the active round repos.") sync_audit.add_argument("--project-root", default="G:/_codex-git/tudo-para-ia-mais-humana") sync_audit.add_argument("--mcp-repo-root", default="G:/_codex-git/tudo-para-ia-mcps-internos-plataform") @@ -557,6 +562,19 @@ def command_workspace_hygiene(args: argparse.Namespace) -> int: return 0 +def command_workspace_hygiene_policy(args: argparse.Namespace) -> int: + report, records = run_hygiene_policy( + project_root=Path(args.project_root), + use_generated=not bool(args.no_generated), + ) + payload = { + "report": policy_payload(report, limit_cases=int(args.limit)), + "generatedFiles": [record.path for record in records], + } + print(json.dumps(payload, ensure_ascii=False, indent=2)) + return 0 + + def command_targeted_sync_audit(args: argparse.Namespace) -> int: central_platform_folder = Path(args.central_platform_folder) if args.central_platform_folder else None report, records = run_targeted_sync_audit( @@ -666,6 +684,8 @@ def main(argv: list[str] | None = None) -> int: return command_mcp_access_policy(args) if args.command == "workspace-hygiene": return command_workspace_hygiene(args) + if args.command == "workspace-hygiene-policy": + return command_workspace_hygiene_policy(args) if args.command == "targeted-sync-audit": return command_targeted_sync_audit(args) if args.command == "mcp-admin-route-acceptance": diff --git a/src/mais_humana/generated_workspace_hygiene_policy.py b/src/mais_humana/generated_workspace_hygiene_policy.py new file mode 100644 index 0000000..95dd2e3 --- /dev/null +++ b/src/mais_humana/generated_workspace_hygiene_policy.py @@ -0,0 +1,38715 @@ +"""Generated workspace hygiene policy cases. + +Do not edit this file by hand. Regenerate with: + + python tools/generate_workspace_hygiene_policy.py +""" + +from __future__ import annotations + +from .workspace_hygiene_policy import ( + HygieneArtifactKind, + HygieneEnvironment, + HygieneErrorKind, + HygieneExecutionMode, + HygienePolicyCase, + HygienePolicyStatus, + HygieneRemediationAction, +) + +GENERATED_POLICY_CASES_COUNT = 1536 + +POLICY_CASES = ( + HygienePolicyCase( + case_id='workspace-hygiene-policy-5d2027200080cdc46bb65f26', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-228473216bb503bc783a215c', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-cb761d2f71e849f1c149b488', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4582db63a0bb51ede7108d29', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-fb0ee31aef29fc1e827f9a6a', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4aa82262a3f3e58f587663a6', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4c516245ec963722a3dc7ee8', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-dabc8c8df47232d77d5e1541', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a0a5fba1d3767fe3c2d63f33', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3e31009425a0230ecef0ccd8', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c23bb01b6d9294f0ebfdd9fc', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-7cce0df320947bdf44a99a25', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-7d3c3344e63eb8e867ee5bfe', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f3675147f70d13633cb09512', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ac1bd6962d0b5a4526fdd10a', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5aef47da6b565cd6dcabe957', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f9d8c5f22f456ec593c6f211', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-66c57ea342cf242a5393be0d', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-32e3856c59c82f31b106ac99', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b1638bc1c123df15e80227d2', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-45895efc199646bc41cdf9e0', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-7a53c08cceab0e41c3359ed8', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-46699cee9bdfd53b87e78c36', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-36d8f0af32e85b3e0b279e05', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5a1b22bdcb58bbcc237f14ac', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0a88ddf3c1c8b14321813c32', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-606b442e56149662192ac879', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-89a9c0752f0b51866217bf84', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-1f3ffab2223eeaecbbdbed62', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-1c441a1661159cb6f7187ce1', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-aad100963e7d8379a24f2b57', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e3eb826734091137b31cc07b', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f8242138d8161a66bdd2d7cb', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8f0f0dfa2a0a0cd0be6b658e', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f9c3fc1327e3c1391868b696', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0baf6ba10316a0cfd87f80ad', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-806a326c17d88486df9359d2', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c992717a0c0a8d1f38b29b08', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-53a6aee1dc74bbd57220d67e', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9c152223f8242817a79971bc', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-87c3f9c9b4e74cbc737cbda2', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-206da35bc71c92f44cfee34f', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-51957806f136b8a3e39c1b58', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0ff808e4688a92886ff70527', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d0ad8569490cf7d3fbf0fa6c', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9cc8d387da8cc335efd68e3a', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-769cb1efd5f31fa84616585f', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-bf728d1d9afc76b2627a662a', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-049c398e0663b27fb5609985', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0ff76ce14fffe9fe665251e1', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-1451df7001a804cc3ee552dc', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2cc605680ae873c818865b33', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-cb226b7380849e26aa4d76c7', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-63a68ccc0d018e2fe1546090', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-20906dab1c11fbb4cebf2b62', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2221a710356ed9e7607ef7f3', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-714c981b7e3ac0583c2a9b9f', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c99a74dc347c76b2b57bb2e1', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-eb582edade7af46be10eea64', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2acae1058db81e26fe74bf74', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-00a57f8e2a5229b50f48463f', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2d76fae86d19d0550d374952', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-20ab0f83d53c3cd4c8a67f08', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-83f282f1d7fe2cca0bd27934', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-90f58c90392bba2d16c0dbd8', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-7694790458af6a1d5b93d85b', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e830494add59daf1410a11a6', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b120f9fd5fa901c522ef7d14', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ebe8bd703ba081cef5c7d379', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-7fe73882bbf81c6c267106d0', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b65b014821b311f4c5991681', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8049cd78fdda5b4b748f5074', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-584d53c3180c3596cb9021f0', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ab6e1d396d8421f67657dcf1', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-af6f8916bf733c4a553d50e3', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3b75f906ae19b7cac43af2f6', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-6372da5f33fc0af7df08e000', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d95aca64f3bee2b9921624be', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d71b3e6ba8346080dd3288e2', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0bcdd168427902e850455395', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-cc007fc291a3b69cd7ea24c0', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-28d6a774f54ee1922b1f46a2', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-7f8126d5be90d3ed452a4b46', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e3afeb4071ffdc5c8ca275cb', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-378670f0c0da94b76e41337f', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2c08995b13ab2b04bb3b6ffe', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9485cd580b4d0af0a7a973af', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-cbc55dafff001c0562f0bef3', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-22763dfd22f3427e4be37b5e', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8a0be41aadd8f750a42b87a5', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-76fe8963137008f415c43ac2', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c8c91cbc66392434a5d8d69c', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0eabe7f254bd4d2b07edc4df', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5518aa68e537145ebd300456', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8477ded0dcdcee9a35b00aed', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-6e5b815392f6834673d31925', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5ffa6841c55ac7d2dde25101', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a65ecf1d26472ac2f80708da', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a1f11a28529a69f3e95833e9', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-99abbd5a1eb0e7929af417f6', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f4ad0bb16153300f1a25a901', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-80f4339eb402aa6cec167cd5', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a5c6c14c3479502f1f9d7f4d', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-fa4fd8681fafee7c8f18af8c', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-6b1c1d1c9dfaf94b8efed10b', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5b6db81da438edf0601a1182', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-33e1a31f6fc267e31bb4253d', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c75fb638d286f8afaed9d2ba', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-748fbcdc57ec12fd1ce44e70', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f7a758fe801cc5b4743ec151', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-afcdf7d73b4fe7cf4adea34f', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4a9ee36e754c0302cddb200d', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-bc68bf7997276f2f14083341', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-343d4f8a2717542a5c14959f', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d14074d435161e2497fad6da', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2f10d6b61b7059a68dfbbe07', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ad53abfd7c68c1effeb5f810', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-baabf5ef53d72a19ed7c2a59', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-6604445f7678fbb9a4156277', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2590b640d600bc0d63323930', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-51804e769de8309aaefad244', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-535f4c2d93d5e413d8362dc8', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-cf5b961e74036f38575a686f', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8cf2fe40310412db84d5416e', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5be9c9d727f2bc8a211226e5', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-43c3023c40e233b8afa72afc', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-38c236c39f79265bcd40b8be', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0cffebeafee9a325002b604a', + artifact_kind=HygieneArtifactKind.PYTHON_TEST_TEMP, + relative_path='.test-tmp', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'scratch criado por testes Python e comandos de validacao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d5151d41e08297b3206d1c33', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-7dae5783cb24fb8b763a0ac3', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5cc4191363b70cf0aa7fb7ea', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-de16bb5fc3c83a3c2b3cdfe9', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-27b8e99b99322d1191afa957', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-36479d34daa393d20b712434', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a6a83313cdc67b593f288949', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c503d997fb7f21f84e21ea2b', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4de06bcc5dfa617a67a7fc97', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d70bb38fcfedcba6216cb4b3', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c8303b89af9eee76b80550de', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4c91044db071ec4545422075', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0272f8771437a7740f2f9136', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-21c823e66f985d3f8c4b9170', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ad7a6d36e185c59b0f51e492', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c4079fd105c06188b7648390', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-89fea55e0f2e7eed2dc6aed9', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-11c6ae63b34d64d976737fd0', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9e3adb794c568779110e8dbc', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c98c7afd64d1bb2218ee70d5', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-24c958306c95534dbde3b460', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-839c53699769f17a64eaaa76', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a655fea48365788022c7e790', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2a5210ea72bd8bb5648c4211', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e6a260203c0b6d8b214c146e', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a2289586018365af90cf2177', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f373ab409a5d865c4616b846', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-59be3a1386fd516a466bd267', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f10f55b6afd52c1a022b8b08', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5be8f3602b299290f9a51e10', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-fbfadb1b540661acbbc7f29c', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-86fc556b8cde5f6021ca750e', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-cc6d14914d6e8063ac99a0b7', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4453a8c5c2c07323aa5b8433', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-db3676c637fad60cb729a137', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-fcdbad0b442f7cb30667b8d2', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f3a2ee8debf4a752e3f7aba3', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-64be6090cbc184ff205ceda4', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-18a8c673829bc7fe959cc9f2', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-567cd51ded3c5a61c54c0e52', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9747e5ee8a7f4c8420f250f4', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-63be7c10d07e7e3b9b8ec524', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a91d6cec8f283efbb8088f8b', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-32100aeb263695f65581202b', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-98b49e41f3ff55563ba7c023', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-999077317eebe3407d92a6fb', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-dc79d65253f1664259d654e0', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2b174197601e9fcda1643b80', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-505819b6bac2af0ef680c9f5', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-63add102632c6772a95c02fa', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-bb59065b949c11b45e6a580a', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-19a2af39018f3b8970927eb5', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-7a45282637b98208c31aef47', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-eccbc424c8e7705783fde281', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-57eb914acae6b910b4c84cdc', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-555973771c0bc08cfb4a0fef', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3dd4599c9806fe8be6bbd927', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d20f4e039a297158b62676cb', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4d5380dfc0907937e673dd52', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5032234247d35a4c7757f7bd', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-48efcdcb32b4b48e8f1cd2be', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-20524468b77bd98b50f26569', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3580795242db48c0e0fbd16c', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-562907e967dd95be32bb5d2d', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-eaee1f5db69108f325083d06', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-1a73569c43b80f04b10c1806', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9470b7e75d76cdd7664accf1', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-1c1935bafdb0bbcf3af59f8a', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-19d0b505d2be66c8c3c1261a', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-6d9ead6ac95863815381be82', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-fc4a471a83c4ba8b80b1c175', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-19b3dfb085823db759d51c14', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f974c5ff10dc5a9315e0939d', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-354596a04060116206f1fe3c', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-759ee40319a64e2057d65e51', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b0cb7c6d066160feb379f756', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-41813ddc789b80077866c17b', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-1b04436005d7bf9f34805673', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-6900bf8d9ab763a54e7d8df2', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-fefb2255b4bf807af3be61b9', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-6d442880ee6477971a4bf367', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-eab3ce1289834e71c1658575', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9f31830c30a755c0b34411fc', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-604b4ff330e6f570728dadbf', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-bfd585c5965eee37d19ac317', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c63bef4b35db5567c8e912dc', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-373b03df32ae6ecaf7ff4724', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-934dd371549ac59f94ea2192', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8b3b9a808390d882409d7f53', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-038a6e252cd8858d9bec5f8d', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-be9dc8369ea8b856c450fe9e', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b8cc4b4129a39e26d12dd54c', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-7e0e3d5079c53156842bf0e1', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2c8d1eae0a8f7d1e57ccf446', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-381f971c9613a3dae7a36bb6', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4878c0ed50eb96527dc4afa4', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ad377780f8fc390affdef8a5', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-7738aac3e5c448c63fd48152', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b68f576c9a1033abe49338e5', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-971a13cd29ba63318707f3e7', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-32e5a9b04d6858d70b6f5809', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b74bda62bb1a4da193374461', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0da64e82d58b4800f99a689e', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4ae87c435dc539f5d7cd5a95', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8678b5f6d02c401fee1e6e52', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-6ec0aaf9bf419a815013e9fe', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-648e6c1b71ca9f2ff404b7b9', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e1c9d93be85de4f03baff996', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-129900b06af6dbe442ec350e', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-07a1403e34982a2088469c90', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ea1b878b7661a461972ae61c', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5986137629e6833590dcb98d', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3a8d2ba7818314ee9e9c869e', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9c0ea52f113b7d4d578f676c', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-80e1b19cbfe5a1145d9b9ab4', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9631fd7798b5f14dcbbaf8df', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f06af3ba3aad5c8e2c2c481f', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-15922e31356158667f609871', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3570a8a0186ae89d0e5b0a09', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-41609a72da5364467e659ac8', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-306c53ddde98893dd035b854', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-975c7f10776da1853fc17531', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4fd0e883783a46f47c9246a3', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2d9ff771b3062a224e059e3d', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-35e9b4e7e9fa5d1449773e78', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-79cac4cf5cb77b265ade0aea', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3bc65f0249495ee14b7066d7', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f19a9bbbc9f91acf3d11f6f3', + artifact_kind=HygieneArtifactKind.NODE_DEPENDENCIES, + relative_path='node_modules', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'dependencias Node locais que nao devem sobreviver ao fechamento', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-cfc8f557d32ce07f78d4560a', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-459852494df7dd3c39fbf5d0', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2083cf36ed9e1cfd0cce53dd', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-de4f782c0fd12ef861c86eb1', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-83ff0921b69eb2960ef11a49', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-bd0e42456b30a2db9ea97dd2', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-298faade3e7e92b8e1a1219e', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-66f6994315b010160f5a4a36', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-6010fb0f2cc181d67ecc2a8c', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-cf5b73b20f478b95aec869e6', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c03a408ea48bdb1a2ab31e0a', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2132208e319820fbfcc65f2d', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-03060d013363e2b76f1acc71', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ac7b205e21b48aefea354c6a', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-370898ec8ec3cd56146b2d44', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2db02122d61d519da4abae5a', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-60de362c773e18c35de7eacb', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ebc98d3d50aee2e8ba94819d', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-da95c1295eec305004185f0c', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2adbca9af32efb4892f2eddf', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f5383ff0a51a83c05232a563', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5fde0409bfd86e4a4649cada', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-46f327e5f1673b0871082895', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-62f12b8e01980fc770cea32b', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-04e45b0afe6152f5f3062829', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c8602d0effff290383727a77', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-fe54b7997e0389795e17b50b', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-fc1dfbf0fbae842cacc26306', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-eca417b52186a96ce0b83a45', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ae39787aaffe6e2e697897a0', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-1d6fce6791e78ccdf2f19d37', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b1901866a9bbd0a78fc77186', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8d2249a981da46ff0994be71', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f148757e85ce6a1948c8f0dd', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-184c244a53912db7287596a4', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-076a0a5cfdae93c01779eff4', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-59a5f01a3922485c48858080', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a6c6e911d776e6d78074abfd', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2916b84236eb57089905178c', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-cf9ce386a463e98b9d98d9e8', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4d016fc9743d9b2aa207d977', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9d1d8f22a1def32e5fb33b27', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3f43658d5bbcf12d266d4745', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-96a2ea6d33c0498dabd0e8fe', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-11df1531e24e56674b903f3b', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-14c46d6d5a905fa91d2cd314', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5f32fafa16517ddd5269ce16', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f361abac8631302a073a0396', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-aac25cd48b994b0282253491', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5b60f6a89e661312afd0576b', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-478447bee2a54bc3ee8b9c79', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0d570960ab19e1231dfbbcb5', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-09ae40cd180c5eb7956ff892', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-7a9cb81b3592731135a16090', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-bd388f33fa7c95b4da1be00b', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-40be3afa553e62aac7f5ea48', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2dbc05eaa358028d89964da5', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-82eac89065c9172e71f8f004', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-39e4061ec3fc201f6bd9e8d2', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5961d0b9707df28b64e660a7', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8152d7ed5eda4cb93e763384', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e92a88769093b80b228b26c3', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a4f63483748adaf64c7ad890', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-16882a22680daaed30148776', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-311f289744b2417ec56e5718', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ea95217e358d65e579f0887e', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c0e5f3de2e74bcfff591352e', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-04237012fd5a97cb2455c8cf', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-01e945a10dc872a2fd7a8f8f', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-125b6073f8a4f568a362ad92', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-7d3ffb47116ffbd4facfdd8c', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-7554f7d46d9a298f4ac91505', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-6a497021a644d362c71736fd', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-493299bdd023618df3097399', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-bdab48fedbc824bab0c186b1', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-28366f381b81f962e25bafdc', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-fc968d28369664b62b66acd4', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e90d5b05c8d43ef466caa895', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5e6a835ba7b3171623e5e237', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d09a60c35ecf3fe09338eac9', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-10c43523b6666ec6b4260c47', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d79ba35039a495af7131b716', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a5f2b076a55b81a374aaf167', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-36b54f0cbd693f524a815006', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a26c0c55235ad8781a1ce970', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b161490b4ef1d4b318e9dadb', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f1cf75bf13e1a2c4b1fb9fad', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2b81172a7cd9d1694e868f08', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9ac3e0387c7a780c869199c6', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a47bb2a54f2dce4551acb2aa', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-64d57d550e73e9f1c0bf2bb8', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-daab15b66f83da37b9db10bf', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4c2bc9ec48570b43357a525e', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-13f26ca9c1011b69943d2133', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-172035517ee2aabefc2bef03', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d68bfa311d8e7c2834d6a9c1', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-15e653d15e7ab5304d3fa3f0', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-20ff6c28378d85f20e48e744', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-63b30a5f1b844b56c20f03ea', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-18208866b104ed61d3cfcd80', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-591b0eb889fb9e4e4931c760', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c9f441798d77496b419652eb', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9a285f90b49b4a15ce17d479', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-71ed16529e7221b64449f740', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5a2de4efef87933c0c2932aa', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4a36dd87cc9c09e39c0c6827', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4690e18062b31273789c8acd', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8acf14c7ee9693068cd04b96', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-bcbe8ef7a31a2bf36937882a', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-40a331933f482c55c1fe6fe3', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d9e74252a44509e1441bc88b', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5bbf8384ada4f2476efadc76', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-70ef6cd5fc5b11bd376df812', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b782c55f2131fa2a28a31e82', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-03b127edd086166fecdf18af', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b5dd10ee1420f699635cc702', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-7985b7e55a99e9eb32fc7e19', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5dd225c49f5e94de39940080', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5320b91b3c7c1b5b353501b1', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c580e8a739783a39f6012d90', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2e8ab4fe9c56de5686041795', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d8f7742d9c6b437f76166136', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-bbe1970fdd71845af7c9c98c', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-925060767c477055c16d42e9', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-472fbeb42ce16cf38904d9fe', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-6ed784f12b270bda41db5ea4', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ca299d57e548c8e3063221c1', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-deadab3095454d6deb2a95b0', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='__pycache__', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache Python recompilavel', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-7b207a3d3a791e6f317b8478', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e279b4121145b47ee6986d26', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5968540933b2128d689fee93', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-33a955f76cde3af0ba881437', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ed0473cfe535188b56d97f47', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-85759245181f420fa61fca44', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d5e402a923c8455284f62eee', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5bf1de6d34f40d170540a993', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-1d064ea395c1ae7596c65e6c', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0dcc7b6f7b302e93233eb409', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-cc9f2536990336b7e9b85903', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-70ad2943a83ac0e0d8da3842', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-06e0233c29ddf68a3a8ab388', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-bc2707f56e756c1c77b10267', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f77a5b5d611a40c6c8192ccf', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9c7668d773a35cb5982c6f90', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-06cfc5f5ccd8aa67f5336b2d', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a00ace45d6169704ce1c4b2d', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-bab58d5ee1ef5b369efab750', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-be0554a384d0f9ecc3bda0f0', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2891102a6262a38514bbb0ec', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-87892ebe77334f703bb9b00b', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5a71c29171cf471a07b0cbb0', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-df2b6c007e2582703dfd6721', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-df7c9d3072e0182eed224d4a', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4ae45ccf1bd5a243c5c76fff', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-cbde3ad3db1f85d51a8105a1', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f9475645532f9fe7658095c1', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f4d1e3ea7cc11863567438b7', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3f2f69a1b67b52e97af53897', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-12a5fe4fa84933253710e06e', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e16ad76c4ce99ac683135bab', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2a4a741e718cdb025f7c7f52', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-6f0aa0ce5d43150fffe49553', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8315faf77d2b86cbf5711e7f', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-796cf5bf3e479b8f02b4ade3', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9d8619770c68b634c8977bf7', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3ab9be0325abbc9669415405', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-11690632c34149d2981661bf', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-452af2016d6bf9531b803f2f', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-7af812bd28d5fb4216c7a7b4', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2f8c66d6860fb111dc7a2d6f', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-29292d4b3f77614437399b52', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-df69f6ddb8e61facc4f73729', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-97b8870c7c1ca4827373b1d1', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9df2765b268c40a62204f497', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-98ef9922162de44ebe8163ae', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5b5687d9c2c9589718090602', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-473fb24bc97989d9740ca396', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-026ce33ea887b038d856e2c8', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0e7704a381980cd0bfc8033e', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0e3c64a8cf4bee5c966da4be', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ebf06445a5f8966a87216ba6', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-448609075c37e1a48c8ec848', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-6e581deaad4278708d386e4c', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e6f59b1931a735f3128fe9d5', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9d5b4a1dcc88dc7e2f56ab75', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a98d0e581fca3f1671906f86', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ef9dbe665d6aad551f3b257c', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ae66a440587b249336945595', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-08bb654daa75d6c1b0869690', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b87f308f7e2e4d6a4489f6da', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-05e1a2d2fb6e1665fd521420', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3b5f1f9315924d99683160a1', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-6ca7b6117e3e8182bde83a71', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0de3d34c785f234b39d90199', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-66263dacf8bec47acbc549d4', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-79eef25908321869d4ff5a8c', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-33f0d2f5869c3612677d618b', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5b6e5ab1e952b8bc3a880a66', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8e3fd84d0413b8373f6d2e63', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e44d44412fabe1a61c17c9af', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c544a8dae9574edff110b6c3', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-345599d8b3d545f8c88fe6f8', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c1f4702f8b43035a75aa8799', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-75c30415207eee8b88899f6d', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-243ce1e2686d144903693104', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8a02ea14e78603ab3b7c7370', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-fb3fdcd04f57c68ec8d9c513', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-14cd0040ba2e8ab49d703f96', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0cf67ea02315f1b8fa70d190', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d6d6f372941bdbc0e914cef8', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d7b06fbf7feb8a1c07d4218f', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3c0cc888597abbad3935d3dc', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-11db86eb246a30ce05fec98e', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-db1ebf582b5f30bf5b38936d', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f520711c4be9be2e77a77aa2', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d6974e998cf6dae2a39f911e', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a8f115854f6d29351736caa2', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-de14923e9154de8a0b8d9b3d', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-aed8d6266538f458c3f42d27', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e3e2e75f2df386dcf0b1da5b', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-20921f16c47360a628795d80', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9f215a076512d81edf354b12', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-552e187f20362e020afdc084', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4b9f208cdd8f600a76035792', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-74a472030b4d25592e3bca5a', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-700a1c5401431e0b2c7e589e', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-fb938811a0ffbffffbd7cb4d', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f7b2693ff4ebcec151d9c88e', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5f997a897abf9ab1a2b5d015', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-21a158eec54e00ef022b53ad', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-aee6af6921f7c3c1391ee7f2', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3ffa0f238072caa0ff047443', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-91cab140715d603f30f2073b', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a42177a9daf812a49f0ec814', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b6a14a6321194517bba70ecb', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-1c5f3ebc1f996db9aafd91e7', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-70f1a37c0c1ace5b824b7d7b', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2d37054caf535025614bcf13', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9ea95ff57e37f0c9bc56005c', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d3716924c8e2cdab419a0580', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-03f3b8165c4db80746608723', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-44221f755b34f9b710bd81b9', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-7d544fd5c74146628f77b27e', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e7d63542c50a0c10bca83207', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-6e8030c35d3edd55960e2902', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-caf48d7cf23108b747994d25', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-6c581eb23138ce79c767c194', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-6505cc4cc5bb7d5eb7ae978b', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ba8dab07e007011ca2548c10', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b8daebbaa209586df5eeb14b', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c1231ec6bb0da4e2eec79ca2', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d449800773bebe30d2288b57', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e8380cd22390dab5eb1fe835', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9eb6455e539dda09840fe026', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f654e04a6a7ab140477d4694', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-982afb22b744d71ad93b21cc', + artifact_kind=HygieneArtifactKind.PYTHON_CACHE, + relative_path='.pytest_cache', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache pytest local', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f0e2b6051a25680213ccf102', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a3af7be6e4f141cc713654ee', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2f13a72218ef2d257b4bfcde', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-08bbd8b44d1c96f566d43c6d', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ed79be5c165080a69d4da3b3', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-163a50a2dc5c6cb4108af4e7', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d329c44c041c98f8b6fb43c6', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-6ba92d9ca9913e59780967aa', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-27c722628e07f142c84e88f3', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d682bd4ec67208db5419d0f6', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-38fda31ce5365bf61225c90c', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3770025fb1f3854afa2bc5d6', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0e8d6bbec1483d77de15cf70', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-569c8f0dbe1a605d213bc8d0', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-6e4f7f3ec011edeb9270cb26', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4f647d77b82a5c706e3b08a6', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-db9df0db8b910fd59fc05e9e', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2ab31dd9b6f2deecab0c6d99', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e31b3fd8f18816a6c097a8e4', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8991cc58fe251b5d17a06f9d', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4581a3dbde65d8f5a5cbccd7', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d4960d4ad8ad6747ba366a4e', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-7986f0ba518a02fec67706d5', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-59c195524c2c837243ea36d4', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-268698824b7ca6d89ae138b8', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-1f36908ae742334e297aa565', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-84f51b297cffbfe298d595d6', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-722c86c78f4dbe98cc309348', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5ffec5fcda1adfa1d6e69bdd', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5ba86011aca991c11a8d72a2', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-13ea61c81896f8c942b05670', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ed14307ef99edbb193a267ed', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-76599755c3ddb214f2580256', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-146ca18cc96e7a50f560f4c8', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-64c88ba7749ba1aa2291d960', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2555e53706afb3445ea306dd', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b6186775ccf8a3143cac3095', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-253ca137bf7792eae6f6afe7', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d673936d448cb3e55193de2f', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c0cadb1f39241a8723c9def0', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a72e60e8e654205f3489d45a', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-6c135bafc30adb986cc2582d', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-78885c01e1571771b6f11c4a', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-fbfd687902f6a541e30e1ac1', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d4d2ef4f5c60ccc5d23a7acc', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4853f08faf25dac8fbecbfad', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3f840724dac52cb6b2d70eed', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5ef4ce282af729d6e1dc0409', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-730bf84a8cae7a615dd2cde7', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-67828302aeb6108baf5e913b', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5bc36e1c0862f5ae0c11f858', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-17fc36aabcf66ffdfec97a76', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c7aba80c4a6cd80bc97a6d0f', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-83772e39a4fb64e48e6ab291', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-16988d22e89d4a6a99dd2e47', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3c4bf9d8d8fb5bac9b2e75b7', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-87608a76b15f5d8745748d64', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2f840343397bb87c6aba63db', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-14a85b1dd3407909b1d176f7', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d95fdaf4a82bb861a713dff5', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c940fcb3fbc0c2944016af42', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f14f76fc053be5a94f5e9300', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e5396371e44367535b2f936e', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4a198217ed6b7acd1463b92b', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-7b2bb360c07c84246a2bc1f4', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e29145fe333ad74c945e675e', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5b6471a4ffc2095ff31f9736', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f9c172c42ac667a5d4547208', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-1e71b529f7d4af70df1639a6', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-aa4a2dd7e6fafa2eef68f546', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-dd8eaa8a2c70f4970e7ebd97', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a994cdbf2e7b6cadd22f8e68', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f1dc1a574349d54522da7252', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2848b32ea4904920e8727e64', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3704752a0d1eaf47cd808d8a', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f5ff81a0290e52bd45b86614', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a9985e7494f404fa34edb2ec', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8adee75cc23524ca2b30d800', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b5063a908bc79d9cd8180203', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-6249511fc04663897c59e2da', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-19be3063a54ed38cffb55922', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-de9c70910bccde11ffd55932', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2b71c88aa1e44baabc861f8b', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-45f04dac7949ea1d87d7377e', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2e0c852873f8c290d0014a69', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-7654ea24cf551c7df44bec7f', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0fdb4b3b894982879bfbb595', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8a46e253958bc78425630ac0', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e4cffff4b64781d5a71ad8a4', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-7df056d40f919115b610e8de', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8eeb7ce34439ccc686f2e9fd', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-abed9576e63e2e8001108893', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9650d6516e6d90b8a313bbae', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-024109833dcf342159869d9e', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4068f81ef65dd9f8eba998db', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-fbc051d2d39caf213e9f1430', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-98c35775c76f56f87e697292', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4b3875daa21ef76cfaf877ef', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0dc5d213e960894ff570fd67', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-66a30a305235af1e32a40a2f', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f0cb9b340cc1e8b46a60b82c', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f9fd1b84c092199ee1e9bbaa', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-7bc73aac3aa5c0efc719ff24', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a2361d1449277ffac0b7c319', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e4d8ba483acbe3138913f1b7', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a2fc3d7f1c55a469e9f3cb13', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-000a077f2126799a82be50af', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-35519f2946cd0bbc1d6ad279', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-6d7ab1fe5611d32d2ff7fda2', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d58bb7492b68149eb5144779', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-36b3fac3b36d0909398c6fa1', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-001bbaca12e34d3e4e2281bc', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e2762c4f6dc36f01a6430d46', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-23908cef899a112822bffc0b', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-1c18eedeec01afb4018f65be', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-efc0ba853d054fa9dd04adf4', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-278cf6ffd1070e98ae68567b', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c1982d8142ea2dfcb1ac7aa3', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d3e2c0a1ecf2e0c6fcb65f85', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-aa24ee54de8dab3357bed94a', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ba3ea3220550c44c4ba6d12e', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-61c286abeb81d74f1d022716', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-581cc1a274a2e3f121e31592', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-1c678540b8d8786d2a4da29b', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-56e2087b052ace9ba6914c39', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c43dcbf5eecd74a6d1eba788', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8648c8a8a58c63e70ee3d38b', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4350b7408b77eed3ae03c0de', + artifact_kind=HygieneArtifactKind.WRANGLER_CACHE, + relative_path='.wrangler', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'cache local do Wrangler', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-22c74a9d44e2d054b9863970', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3d33ec90185c9d4957374171', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3d5bf59275e82f7b7f45a933', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-7ba1a3e6113b262f71b9173d', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-75ba4adafcddcfb5b67815de', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9a8928f153f21c4d8d4a5a6d', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4df3d6da62eaca340acfc1b7', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4f858de871f2c8c61d8ed99c', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-73cbb47ee4bebda40cf859dd', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2a56e0c5c52ffa7ccfd63235', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-96be0449a41a7531a9a629be', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ea8d1273efaa262fa6584217', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-45b24072fbf863e2a582abf2', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d41f81201d424f12cb5b1a8e', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-240d8207db07c760da9b4aac', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-7e5487d0ea209b2e3545c76a', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-18748e0fba7b6b308add53a4', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2015bfde09b95275e9e70fc8', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-759f0598883c3d56945439dd', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e3253eb4588deadb37c463c8', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b170daccd7f13580a3ddda95', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-30d012f2c68095cd3ab930cc', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-04c6c8b1021c9946609e500d', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a6ebb6a02daaf23b189aaee4', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0d9cf8c911ec89ae7bbcbcc8', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-601e758bb6aaefb1d5b95488', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-cd384de6a85c2c1899c18b0d', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-7892a6dd03a64bd69b3b4a25', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b07ca7473e2758bbdf3b4ccc', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-1e64395d9f612a68b283039a', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-bcb88ec7c8cb47b192ecf0b4', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e310dcdf670018af2a955762', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ed0110b21f9ab9a1ac1b9448', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-847f6c09b0b3fab916b91a9e', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a076ad0984945ecbdefa49fb', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-66aa00e77b151d5f5fb74277', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c86b22225a82361f7f150654', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c5927072d76ce90c12a7f9c3', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-fb158a9eba665564ba86ab86', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8b93f7c0ba6e7c7ffd03227b', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-457e6a520f9dcbfc73c8bb1a', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-fbf4729faabaeaf5dfe037a6', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8d071aff151dc769eb66afe2', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-64a8497183c578e6a8d782cc', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9b6e5bcdeddb31242c7e1ec1', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4597fbb28d82e8fadc2a0dbd', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-19ae86641c8116e5699131e1', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4f285474970ee4be5a909818', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-904c27b078124b1a4a04f7ea', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-586afa325d570cbade8b1dc4', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0d75b61c03c5241927bc7279', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-73ac418af2cde40ae8e625cb', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e17cd72e4956e13298dd71b3', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-abdacd8de8be55b05d2d2836', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-69320c8ee9038a249a43b2b4', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-88fa48f7fe2fb54289bce6b8', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ad2fa2093eb57c0e42d5301a', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c94dfde395711f63fea0e8bf', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9ebf4a60207b70d609008396', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d05a984f1f6e107828f2964b', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-74ce7b97ce2929a015e2a8f0', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-859b86db42440e65253d9f7a', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ced699e7ee39dcfea4d5d251', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9636f3326a6ca48b80710f0b', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-227c86b164a0e44bfe832d92', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d6d7766af231f2e78c308e01', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-bcc46b70129397e76a120906', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-113753bb402aca8e07e5a68e', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9313fbfe524aef9ce33e9cbf', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9bd8f5f826d3f1bc9bd4ed58', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-012278d375756ac0d6130c32', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4a225791d1b78cd10df48170', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-23cf3b9f005a679799f02adc', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-86142aa2b3211a406770f3d7', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a9ea8cdbf1a1e9a709702033', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-37970b760c7a0b62f1809095', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9982ccf4eaa6a7403c7a296a', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b6e181a8ad5a520fc83713f6', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-6e2540a8eb69beb6703d294c', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-13eba0af5f32e47083d8aaf1', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-779c45f371d1139159ed5d1e', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-64f12486816b39cd61f65e48', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f6b00d9941e5b8af11634087', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-1659f562c225a77c3d21dc73', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9335b00b04946829d3588027', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-52dca61180e69b4271c76a7f', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a3fef04c3a6b141850abccd3', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-594cba404021ad5bd3ebad7b', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-fe57de6bd6fb8e2b1504832a', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2ace51e893057fe8671e6688', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b2a96120b23e44db4778f8af', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f99d794752cb041dc7f25950', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-19346eaca474373147e999f5', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-075f43f30090d6d192c0cef3', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f76958cfcb496ad70f9f0f01', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f499a5bc1a1fecc8c9bcc8f1', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5f4d99c2b848ba44b381cae6', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5d39f4105afc058245d4633f', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-dabcc036c56f5d4d06351858', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-bb876e19d0b5a14a99e95735', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d4229bef08dd182ea60e3d3a', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-721c883ed20e78954e7fffcd', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9313a46effd4894e107f20f9', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b7d44bc073e9b42428941b69', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-fe16542c98a1af3006458f71', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-532d55f81b3bd7b233f67830', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-16a26d6fc983daf6b5a6c01e', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a4aff3139b3dc4c81f3b501c', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-6b80fcb4fca18dea23955702', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3e1a73f87836c8c33bfd815e', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-407f448262c313de9cf161a7', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4fe64e17e2a16b7d77212e76', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a7a63624b4a8bb95aeb68565', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-87ccd163d920af8cc016f70b', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a0d8405f3d874e9d3c4910c7', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ef4bcd92bdc64c57cd9eb200', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5df093724dca735493938770', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-683a7a4c24b4720d5c2e5962', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ee1738d67c9abc1618c53ce9', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-451a287df1c92b445bf66452', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b8e2f35fb5b277faf4e0582d', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-654f6e5b7878a732bce3ddd7', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-011ca6acea0013d9d6792624', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5264259a6239efd45d8d082e', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ad36a1c3a90d399951753f40', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d1b60206e4153aa8e89d4c57', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-6ada66edaab8afd12ec2d953', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f4ca1716fdabf68ef6378f67', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.next', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-aa893a91f0b5f529c81ce350', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-11a40a009ad019cb3ebd8f38', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e4e2e731428c9b643367502a', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d17635d8ea6b6caea750ff47', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0b88c0dbe0eba1cc5c572f0c', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4a6a9762206a340d5a73ea89', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-70c14fad6bae54129e76c2c6', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b8fa1e76b5d884d1ae694643', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e337072edbab6dad9fd1d04f', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-05b39e39b6738b390427d073', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0584816380b491b1da811ceb', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-03c8de45e0beae174e6c5781', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8ea8c11d5c791bcf01ee1953', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-bc176afed19789f7bf4dc139', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ef300c230504f207710dd0f9', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a98a57f84cbf1c22a24fea93', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f345f2d91b8238dc04041be0', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-70f7c1d8e6149876076a959a', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e5a446021377ff395b209299', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d08309e65aabbdba8abe3aaf', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-50828d18c18bd3247332b6a5', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-56f28e1d8f9682bc482225da', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-cc1f17ad63a3ae5cc0588888', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f070cf6d96acb2c05656da20', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b4f0b10a3731507d678e5739', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-815728dd18b4c3f0257b299e', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2adf27a1f3f8dc64b53ee811', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-18733c27b8a2533955277242', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-64164dec7e915a2810308110', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-557d7fcb8d4146a70da6d39c', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8305b95bf3f41504b12a4fd6', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5969e0b7d7615f7e8deefee3', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-6abcbc7eec1f6012a172abf6', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f71c501dfaefc571ad43bff1', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b4ca4fd058f6772395ce884d', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-6e769f09debd26d12ce4e966', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9a0065d55fd7b87c3387b9cd', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-32905efed7ae8bf7dafddb7a', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-28d011fa95d4f3f673bce020', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5f5de90f4f40d87ad197cee9', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8a7c85e238b58c7485eddcba', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9b0b9d048bf5e69c8f9bffa0', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0637ea1b545929499e4e2061', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-942bae654f19be6f55d90429', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-858b2527eb9d096116aaa4a9', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-502c23c01f6adc687586669e', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b14695cd40cfb1e59928405d', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5aabc84c8591fadc1de0bc29', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9e8888316d1f80f22ae15466', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-86cdb8a52a381b22de788293', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a17693cc26b04a8f94276385', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-fc44a31f114d5de20b00e08c', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9df2d6f1bb11f74d527f3ba8', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4fb36af54f932d92c6e62ee7', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d95a0c32d037347c0966dd13', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-aa43f6f3ef56507daf0e429c', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-cf78ee0c62a7de80f3e8f5bd', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-47382b7cd9028710442ca44d', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d56be7c2417dd885249caab0', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-df67efea99e208d1e8ce3153', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-25f2f8c9b3197473b2983e43', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-880962ee08263ff83c675bab', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-16e9766fc35c738a2d7a44ac', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-1390d0f8b177e37c676b3bb3', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-60f1f9bb4cef583076d85746', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-090bcd95c568ed20a3993fe9', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-6a631c9ad22ff1c4b37e459f', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4e7d2d770f6d5e0f8589be47', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-64575240dc794dac60ca3427', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-168bc73f735e2533f43c3c2b', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a05fcf1cd526700346b4608e', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-57bee72eb3d0cf5811e0b336', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e0fb23bdcdff26f1a7d481e8', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ed8d90c7fc7150c57a57c8b1', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b047f6a058cc6d2e69bd2f81', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-aeb3c9b0406f47891b84f70f', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-257b27085bafbaf4c0ed0d16', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5d4344c7b634ae790b6632a7', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e45db95bddbebd425bed22dd', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-919ca2b1ecf5214f6d958720', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5ec5406b3dee115583fe7d2f', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f849b44d904c3dc8262cdd5c', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2a6ea90384d1003c37e9a43a', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b2dd794c6a232ef45d2ef4b2', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-15d42cb88d1912559156723d', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2dcff55cd6852d3964324b51', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f75967ccd57936103ea7e45a', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4e50467ba0f36b15704090d4', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5b9e3bc1d936ae94307b8aea', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5dcf995abf7b4996453aef71', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ebdca4cfed89d2f4ee196a2d', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-72b02e4cf94669bd2e0be690', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e83991370a9bc728259cd43f', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c1352ca4fa62a9b6c55d71b9', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-49c4ca0ee652f2db1d5cfb0b', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0b79129454a64b0c2ba5233f', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-6261eba1ded692b9490c52e5', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d79796ef01255ce97707a24d', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-1dbde09f3bb37170e403ba56', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-21a6041cd6e4b141df90f0d7', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-50a153acbc8e531eabd2d088', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-371d4bff56dc3b080f7b76ef', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c668e7203438c75bd767b0c5', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ac50d5681d1e60495e60c5bb', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d38e8d77f4e3291d1f9362bc', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-796581f59430e552381eb868', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-89c45bb6f2f80a8f55fc65e9', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3cfd0a5dd7a13bf14abb83f6', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a42353f0f52886d9bd234bc1', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-be903ec238b0ff78f266923f', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-bf7403b925fabecb4d1ba42b', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-dbb1d77e4888b93719527f20', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ccf449086b1cf2e45c0ccf63', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-10939a14e9ad4f5b967d0231', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-cb36d7dcb182fe4ecd43bdc4', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-6352696f10e38ff4faa500ac', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5c26d01fa304139900bcef46', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-fcba48b59ed02b4d9bcc6bee', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-201ac0795ec6833ff9e24346', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-091c40aaede0e58e7e1d6bcc', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ed36634dd48df3dd6a7dbfe0', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-223b1b63159c8e15fb15012a', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e75b3411c9e76aecd0db8cdc', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c9b435cc636827661e1efe13', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-bb4d4c5d28abaff6a7c07289', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3c7b29488d0efca0d11ca40f', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-98fb7f67ee689377512a51b5', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-cc5109da1cd45739a96f2ce5', + artifact_kind=HygieneArtifactKind.FRONTEND_CACHE, + relative_path='.vite', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'build cache frontend', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4faca43b1049877cadfdc2fe', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-176e9ab836555394ee6e5743', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a100a8c30ee946766b80ec16', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-76604ede0fd59eac93239ada', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e177d8aed1c64a0b5d7dc260', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-dc163ba0fe9988b69cae3214', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-483b259c64b114776bd3d4de', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-7f6d769ed318bd80706cd236', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f63cf780a776c9ac4d0f1fee', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0314d34ba020265fced84f29', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-15c4be9589d43977d3b7f89b', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-63d9060ad08a518c4fe21c01', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d482359428dfe6b22b2ea9ef', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-82433867896408ff34e61e66', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-74e31c3e6418f3d678581cee', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ba31656e761a0bf635e04b5d', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f36a9b114c8dce014596b328', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-104f28cee3e0a7610d15a46f', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-85e6baab9337a3ff2db1293c', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c3b2360601904807fd0373a5', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d48e99dd57a178e36924b6f1', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-539e46000d0a84bbb4176baa', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-1ff7180621d8e48958bd4015', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-6abffff75c129f9cdfa10a3c', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0536f00c905126594f43fb06', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d7991e00237c9bae5f8f5f01', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-bd0cfd6723eed08f1c448c20', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4d234204e94cb0a99eb2e80d', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-11938b72a5ad1f4890b904d3', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4653a65369e43dbcbcc5e788', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3ca741e5554fdc0b580d459f', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-73117641b835ac2b8a5b9335', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4fb01dd972b5f2e70af61c5e', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ef1ea6386eb7f71618bc5863', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8f75ca875355b4436b6b3ca4', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-dfb32caeea0ab46c1b694e9c', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-da44edde693d82a456825566', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0b5d6ec3993938868c67cc6b', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9978752129733afb531edb96', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3d12b21af2b4b9fc59200ffd', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0de790a3173c01e69fa8434e', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-37b3c30137ef83296ae243ae', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-60a1979676c449a1b3050801', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e8ebf112a0352d4f46c408f3', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9a07f6bc8a806d7fdbc7d611', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-80089f15de0e33f50caac11d', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3dd7d4b3270f78c4288bd404', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-1acc59c6e7b41eebf3cf9f15', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-426d6a4e29560d4682cd0315', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-acf59f1930267abbe0daf747', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-cc2adc824e97075baba92d65', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-622853af63215ed46efb7908', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4e66d82a57eda6672f1d8c56', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-eaa7c2374d11a1be68492e0d', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e6ec561ca0a08d55426d26da', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0171b9f0263a81b5189993eb', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-326f3f8151baa727ca89f4c2', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-513ecac77c80162bb7cf8322', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-90ee44f0abb167c99ae513bc', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-910b8ccc7e8cb015719e694e', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-7dc0a274fd0171b8b40c35a6', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-34e6792514bb8b6e4e7fa361', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a10733e29ddd9c2f5f57c7c4', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e6499cbfd579c5cd463297fd', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a10a7b24927f65013a820e71', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5d4676cb005e62b69777e87d', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-352743c143241fa2985eb29e', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-66695f91756a86ffd8edf92d', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-52ef8f76dec4fce35c097346', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5a9916f46a0b6be71ef20417', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-7ee68c3ee28a89e4e455eb70', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4f5bb0a91809600c98686b19', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-36b51421a502635fe9b133a7', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a72b2f440f4133fac87da0d7', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-34c4ad313937f8b483247e8a', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-00ef903ddfbec8b77af571fc', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f2937a7fef38112f35fcabc4', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0986688287882bc06bc2118e', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-6eb684a93e23d35fad05ab72', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5d99d983f282b38d465a0fe3', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-08422fbb5a726c74b2194642', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-31010a93579aada4f91f2b85', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c56635e7732b1bf5788f6c23', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a785e8f459dd7b93752ffb31', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-98395381cff75b78260f3071', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-1de09087b26c6bc6dadbcde7', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9100bdc8109330c2c2b80ae9', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-454ca6601a054535ff6aafd2', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-70270626cdea8db5718a4dbb', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-1379befac6a0f6de0917d122', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-811cf7795756c3ba888afc91', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b1bf2f0df88ba03a7506a6dc', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-24199bada04de7484f9a3a2b', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c72e08459a56f06d0e3f4968', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-718a387f490a82e3b50b79f5', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-38629087eb475dc6e8860a04', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0231f07cb2dad49739a3c9d1', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3a4285d5b2a4a797d29d84b0', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e16c54b7b6d48182e3abfeab', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-57e5b60bc0693fa64577b23d', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4ec1c330bf7ba019287e35c1', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8154969ced9095b03a9937b3', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c682be1565864c02f69685bd', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2cc5b994175ff5c70705dd53', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-7b4dfb59776f285b92d2a672', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3ff197ecfd6c9886bafcd83a', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3ed3c7710a5f408110f351a5', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-52c4f35f40dcbad7db2f5b7e', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9af07ed02a0c7b2fae03bdb0', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a4f75fcf72ec306953f5e97c', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c900af9992d4cb1fc379976e', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-7144b1d2e308e9e3cde3f98a', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-1392053926c7314d6aff35ac', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f9e5096291abcc75071a815b', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c50492e0eefb2a12157a9971', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-34154c3ead398fac89518884', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c9311787d2af26275d1feca3', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2568c8b47763f52f1f1c4af8', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5b4ee00b6e1927cf626ad0c1', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-156a467308e370c756943764', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f83750a3bb19d50c2317c084', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a1e653a4a53e8febc27948be', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-6a07cb2f11046af2a8908833', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-25e825424deb2f5696f4e652', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-29d6fae25db1cd276fcc29e0', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8b518ae41325a5051c6a0966', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-16062b6b36019735b4173fd7', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-da890cf72f3634c898bdde75', + artifact_kind=HygieneArtifactKind.COVERAGE_OUTPUT, + relative_path='coverage', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de cobertura', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-68246b7b227eda8692a72f95', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8ceb841a72d21a346cd6ce78', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c6dd5ed50f5c79fa80862068', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a284b1937f64e76c8e81e72c', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-90d302ce5b61bc12177ca959', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d98f1e8447686c860b1d200b', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0482e0d09dbc98d29f144fb1', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3cdc5cd22cc45aad7d6f4349', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-21fe3e5bb343f7e9d924beaa', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e7e47183ec1cb39bb9337742', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-61bbdbf0be8c80d243627dce', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9324fbae677fb917b00fdf8d', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-11605980eb87e3f824274832', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-18f6063602200cbeecf9bd51', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-6ca9fd94edad4c3758b44c1d', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-6e740f0793a6d621a4aec595', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-74811a6cbb4a4bb17e1ac5a0', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a8d225f62e6e04e9c941eea3', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3b326af48b119c7af8bdf2d7', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-24cb055ad3c513d8e1458468', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b3f1cd9a9de2a7ec43fa189b', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b5399dd3a35adf6ad50aa3e0', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d929de0ed28bb689238263b2', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ea64535c60f56e61ddd0708b', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-06f881d66f1f8c35e94f5429', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-bcdf7ac844621f330a043f5c', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b057563ea9931dba2aff8970', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-040f83780c517c3180762a95', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-bfb5be9d4535e65a96a1ec9e', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-79de0c4373f0a5530995cbb9', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c4208309d96bd9ec5fbf6043', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3d8ee317cc0e2de9d8a81c47', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-60ef4f87007f37d9c93bcd87', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4da6e4dae79434d99dd85e83', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b656f752904aa525108c697e', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5e75870da3db3a338acb841b', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5cdd350008c46209f15a282a', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-16d5dbc202d3b4a920b1aa47', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-691ec6bf099ec535716b5af5', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8c99dab752d718687551ad4d', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3d84d9bae7dd0f671d87647f', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-fca9dbc327d2fdc51a97c24d', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ad7ceb426c98aae62af4402e', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-93f87c233f237e2856eeeffa', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c7646913cd0d97afac391fea', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-79caf6b4ced8806058c9ed5f', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-44b32b119a458d65c4dd9713', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-da261b154485e332d1ba3baf', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2ceeb6f61ee3d16bb7410f7c', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3213a7887d20e9ed069d4a4a', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ab524882ebf961aab646c07e', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5c9d3398810907ef9512d951', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-1dbe8c986fdc8769bf6db021', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ef93a7e39994d95b9c8245d3', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a334530c28444b674f8b1c0b', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-861e4741b9bc2a408973c766', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2778215cfc8dde00bdbaebf2', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b2a0329bc80d1f9557698a60', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-28e6a53205c6ec068b072506', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b2a5eed0599f015ec418cfc1', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-82e2023246f0d706f229efad', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e38cc0b606c149e05d920562', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e1292e80890f285396787125', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-49b4203cc0bdf0b486edc51b', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-bf42b71b59aacad3f80be0d1', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-39953c2ece9620f73c0779ca', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0805e93e898d201f4041f20a', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9ecfe5690fd88526088a92e8', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f5ae6aa1b262a2fbb866f8ae', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-7983a28ab677cd322c826223', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-816ca9f0ab97e52b4a0b0dee', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-bfc0632a87dd546b2189187a', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-aa4f5a039ac5807578e0440d', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a20d4b795cff1e752c4bb5bd', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5accc7e956def9d755eca980', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-db6ba4f424890562e1de9ff2', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4ce9e578e00eb6e0026c5b68', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-1e69fad3f10c0f7989ee2626', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-25581fb56d35699b8c324f9c', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b54cd30bee2ac47077ccfdb5', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-65dad6b0b4ccdba77c8ee3df', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3a3a753e59d34078188b8245', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-538a04c1f71ef2a95e8b1d59', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a4565331e29741375769565b', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-66f3aec805b4e02d2a28e48a', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a8543163fda1e5d22c458b81', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-660b4fff73af65d80f432d41', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-14f55e3aec23090fa6710d65', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c843baa06662ee0db4ff2d2d', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3ece76fcda4f9a115c9af556', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-994f51da67567eb58a38dd96', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c9a11f043a17b44081abb277', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d3168e86efc8938e13d8cbe5', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-6865e82708fe645182fab08f', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2f6b7a29d1ce7fb88b3d8dd5', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-687d99f674ff3050a40b16d6', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9f6f33772402a45208f743ac', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-578b976fea50377f1e1be354', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-61f3414a0d0c32cff3e8e3a0', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a1c31b9530c6247bb7ec8848', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8ade5dd543bae75164f6e131', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0b41d2651f275a3c927dfa8d', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f4458d06f656361c31f4d129', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ec9c908de21f9f1fb9a6690a', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b7efa824eb0f6a25a8bcc7f4', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8ac5eb74c3b484df2512a149', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d44f5cafe4e5d1584905e8ed', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f7636c2b0fa3abd147fcb8cf', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-13f23ee8c6de95e5d5246d2a', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8a8be0007764221de7d6a4fd', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0df15deffab3cbed8dfd2c62', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-fe86d0d52baa25bd5c231e52', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5ab724c5d5dce315cafda6c4', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d044cc4dcd957688dddf0529', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d24d6ddbaeeb68b4c7052a06', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-bc5bcaa0d901d5a46c32c01f', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-325461264079534b1863373b', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9d2b0089ced46f17f2225d7d', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a9f7054e8525fe87eee8e143', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-69f29d921d70bd14b8ccee42', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a01d78b0fed9d2cf0d12e284', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0e95639f3ef64dd3f5a648f6', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f14c1954acf00112796f3653', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-bf570ca5600f13be8876f810', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-efc4b3ba0de873ac581f6bbe', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-68bb75beb5dd7b51f058019b', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-6dac2cc5ce43973b327608f5', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9c7ffadf3e9bcd1a650639f9', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='test-results', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'saida local de testes', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-6a866477578792d6003ea832', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-044d526f1c1a40455986d0a4', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b1c8eb2cddd6a0873c93fdb5', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8d71218747d27c17b2707334', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-98bf90b589872c0b68404999', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-fab8833efe4459584a125f69', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-fe677fb714875daf8bf36baf', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-21ccc428c8e59b224d0551fd', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a988f212fb7771d4054137ae', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a97b0964adc1e4f3e322d97d', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-14e644aa008c2b05693da0f4', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a4b2478baaa84843087be2b7', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b03085214a7e18cc56906834', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f4ece9ceae88dab2474e5bd8', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-542e3bc3be16360f367c45f5', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f1e878cd89dd202acba45c05', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-272db184fa1ebece5ff8e466', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2cc20ec093c53a91ba350b64', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-198589486fca508d9f9800eb', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5bb0ca568638abdac370f4b6', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-64e9623d68930de4357f12fd', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-47ea95b46a338dc27647460b', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-858b74132de3f69a4a30edf1', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b34ff9acb78bf561f514532e', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-16d54b79d9736d66f098b9b6', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-14038863ff74547136134bf2', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d019026dd08a396ed2dab435', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d6be0fc294a4ed8db26ef6e2', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e1999024688241974da558a7', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e8ccfa36b5368cb4acb9c54a', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-733c87baa942b00dc32e1d80', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-1b935c3bb305e2c7edb30d48', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-babe7ac8ec704642dfe89e19', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-060ff87cfd6c2feec6476a80', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d405e0c401b961a8ec3a06ad', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f13bb17977c9b66b74147bf3', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-dd045e952ee856c107e3b561', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-df60ac14840c3e1140d51373', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-bc10c0a310718fc6aecbbcdf', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3d4f08ddbf6ff68bc4f96507', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-78a8b303ce002874cce26224', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8b582576fe5ae6d46b59ba6e', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b5be727937a3ae0330ee19f4', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d5b1d8b8a599d29e92c26ab2', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d85999eb6fcceb83bf1f9f0a', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-6ec305277a330a3ce2b2275b', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-eb58c0f1942f625976715e70', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a5e97e79ccb0411fb99ead8a', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-aa5f17a84b8cad63886df218', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b9dc54de37e77cde181f5db4', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c40efb43702fc4069c488077', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-13b49352e4c9a33093e3e655', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b13976d3fdea0e3378b78885', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b2384797dfe5fdbc2e70d0a3', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4e1de33a41155608725e2a42', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c71779e996b7327f6188852e', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8cac4514925284171a5e855a', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a1d180e76aa483bc04c082a4', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-dffbe69440ed3ab6d308f238', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-de8acb1d9ecd69f84a3723d2', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e152f43d674aefc99cad7d51', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8ac1f90d91903e9f11bbd9e9', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4ce0094830b39ea9aa8739cb', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-dfee2dec84ca82d3143efa99', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d33a7f7273c5834f1d9e8307', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0a425f81aa9fd1fac680fcc2', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e1eb036686cd119d83f9aa32', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b8824b4b271c9af11b8ceca1', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-bce5c528433148a6b995c88a', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b1d269ef406de9022df098c3', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-fbfdfbcdc45f46ec458b37ce', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-735c47bd8ee5888ab4ce2f28', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2e3e7212af647a4b3cf71314', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2720a5dac343bd57b84bb1a7', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e4d534948a0735f9a68ce2e0', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8f12075b9c8f0deea2ddd5ee', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-61b4845b08ebc6ed364b3fac', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ab74934225f02b3c71f8b0fc', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-37b2e9c9db20a5f03bb7d6c5', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-285ee9bcfcb91655a95d03c4', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d5b408272ff47e114c0a1a22', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-86ced0e69e38169ec2cc991d', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-48a55fe646580e8ae3c5b116', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3650ec5ebf86b5ad901a00c7', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-72ca7c7976b88953c3cbf7ce', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-29be9dca6ce4f2665a50fb7e', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-81fdd7c3895f2cc3a1c402d3', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-337d5cd5bdd6c129474a65fa', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d938983194e394d01ada4649', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a0b0ad1fe287e76e4d89a2e9', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ddf0bb659cbf212b18cfb799', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-bde33cc92b527cdcea43841c', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f623ec2bd083bb1e70abb7ef', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b09ff11137b7a6ae7d380bb5', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-232d30a69652c810ce5e5829', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5ca202449fac2d971f402e54', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9e7f8f9020dde960ea206646', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-da6983892fd9c69a36cd6704', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-cc87264945363564b262553c', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-1e74bb6d8591bb5052e342c5', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3dd6a31f642efc24b0ef143b', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-bbf38cedfb7990eddc7eb69f', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e931668c51a159fb9575d50f', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-02248ff8a07f06ec473b2f4e', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-73f4f53451e3eca40605fa49', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3f92a1b1aea3e2c825100934', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d3c3d7b730710626526f7abc', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f855052a4e8652217f5441b3', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-34f6616e283f323fdcfc5e4d', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-1da8b541f1f34278968956ed', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8f4455df78e3a64f39d1d071', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f22975a6d6ceee54acde0c13', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ae3ba69ce05daf2d5ea6d055', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-51b0d6a7d0d85577a0429aa1', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-91b34572f9324fb10fd2f67e', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-64e99b554ef9b4ae3eae9974', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-892f65de3e30093e445582d8', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5326804353736113cad1357d', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-74410befde79db6d4ec143b1', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-dea74301ceb132cb99800365', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0288374c8b60b28ed27ed1c2', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5cf727b04f6d52bfe947fd51', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-bb054e9c3184efd1faf05910', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-cbbb104bc4a3da2049c01095', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-81d64431de5f231f46538f3e', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-eecf5cb269d7bc183ba19ce6', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0093f80354548a8e7077ee6d', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-81ae568170b79420b486f133', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='playwright-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'relatorio local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-bc434626978e58c1119c4d54', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-640be7b5a3a8ddf039994eb3', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5a677d0de6062753caf20a51', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2b86cdc1c6ee1f27166fad86', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5431c615c58fca4605917d41', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2795c7b2ee2cb4a4be0543dd', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-54d9c40a64598cca3f440ba1', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-1c2ecc59e50657628c5928f9', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8b970ec0dbfbf52fdf69aa20', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f41a86b2b97d8b7b6c4fc930', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f55285930b129b24d88fac36', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-7b86ad53677f1c0367d4606b', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ecfe85c094c5f72103979d7e', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ea318ac224237e291ef704d2', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ead36d7b4f1388e1f1633f6d', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f9a7a28d35f09396cda0cb28', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b22c5a1336440050265efd55', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-389020dbfe96569740fd9619', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-57ea3e82bc236dae74730907', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-34ca602989639814c4c9840d', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-528712d30c348b19ce61aa64', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-92a0886d72db4483107dc126', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5dfef590c17099c8f9213e62', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-6134b645b79d72f0589c6b8c', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-71a286059577b5f82511f652', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a8605b8f1e4bad2310607a99', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-76ad6e5ade5ae7f07ab9510f', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9273766742fc873c6b15227e', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-22449e756098e1da90e83e13', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-075241d7d25631c1a3a3fd84', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0869bb4a6ee06c0f3df9ff27', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4182c33f2d2cfa862ebb9cef', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-af29e5ecc05b9fed1db83866', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3703a4d4ea15646273939863', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3855ee0058cedc32c5eb3e78', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-305c1ea765ad82be9cbc15e3', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d81a2f284ed713148e355454', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-419dbf9d75be1ef6dddaaf09', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-87227464238344d75fd1be55', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-cfdc200d6a18a0aa4138d6fa', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-62c425d0b97585f6daa28b98', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-727b949fb7ddffaeb9e075d5', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-7aa93ab19b75865730953e89', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9893541b56d212e4c6d7fc74', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0c25c881a4052a034b453077', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8192ca2bac6f00948d744f41', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e57b590cd48a278b0f927625', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2f1dc916197c4522b269657a', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-6a7f81799d06e549835eddfb', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e2e60b3181d67465d52f5567', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f36a971dc7ff2707a60ef71b', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ba6cc90699c255d9f9b942f6', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-45129a27a27010e6eff76b2b', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ecd98fb855913504f967c2f4', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3d0e079bcd52f440bda6d353', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-6f3ca644fdcd75f95ec6e4fa', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e66924a882742df218da7381', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-42023fb9e1fcc9a56be232a8', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-510dca2c023eba6a24cde91b', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d7cefa193084a218676e0214', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8dca1829f5dbb16870df7e44', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d52a5afd4984c0064f33b9ac', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-bcd8bd92e17399122a57ea4d', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ba5a34351bb364d6f9e9f30e', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-dd3eeed7759085cf8e7ed3f9', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-70a169ca4801d091cfb77e0b', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-649215b2b7a0571e051a57b0', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-91e8a39a851fe82e441b57b4', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-50195bcb6470452a58e065ae', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-72d6759ed5529001fd3f116f', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e7137a7e960936ec21b7116a', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-696708785d1b58c599bdf9e1', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-17037a3ad5f14974d334c89f', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-aa14738e51fd13519153fb15', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3908cef34818fe80e5b3cc6b', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2f25a100226c6e6a618a7580', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5d403ad6882c68d73dfb2f89', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c617db5f5789c4926b46e2bd', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e3f7fa47a9cb4051a31b367c', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-36b8a790ac4261dbebf2b52f', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c9921ce0ef225cc06c68fe70', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d16ca0ff0986059b7af62bb3', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2670a79be040b743760cd506', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3c0996efd00b01b00a622c76', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-08182e2675030aae7f7bef81', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-756e519a29865b97b9dd0c79', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-eafaa4b382ecbb86afa6d0ec', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a1675def565b76d0e34e799f', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-97e33a8c66628273365b27fe', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f0ff34d90136e514e1363f03', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ca0e3c051cdb597f716e3564', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-06127a4a5a464fbb7daa5629', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-516c3e4c8425e67db0674f7f', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2347fbc1fd56bad5c2e35106', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3ee8c96bcc9ad3c498e4617c', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-fb0813d83b56f3ce1e5ab75e', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-805b1678ad9c387dfacaeda6', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ed53df64459131265335da09', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e1db00063130fe19d257fa91', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-1df6cba1e16c20364877b8e3', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-66206559f253199c8af8cb77', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2181d5387a2ad692abf15aaa', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d682dfff5e6d1d75d4e827f6', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-60b611fb091704831dd21331', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-81adc98a2da783477fff9a66', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-7d1fc346d9d038570f08d4fd', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-51023e43f6841b3f6c8ceb46', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a7603d1206187eb91f2a7bd9', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-431f0b2fb4d2b959210f22a9', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d9b234b38acae500574f2a49', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-97194689633205f7811882b6', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b789039aba682db90ef976e5', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-024580026afa641511b00820', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f87b94b60328ec019d9b4d28', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-64e776f1213e5edc9e45969c', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-78f2f398a407cc7bb5a8318a', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-1bae1e410feb4330a77a6788', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2ddeb20c379ea2e37905cdb2', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-75e8e29e1c086fd2a531c9ec', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-113b0d6648d3e2d46ff7ff02', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-aa4838322dc6400286b1e128', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a27c6199585aa25420eeb89d', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-1f895752370be318a3fb76ce', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4907debfb9155a5d0657a5b9', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-48b1d02369957055da09c25c', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-48f3c181af6c3365b95ab0c5', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-85cef7b199e26959c7c62613', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-06851b2e008356836ac19077', + artifact_kind=HygieneArtifactKind.TEST_REPORT, + relative_path='blob-report', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'artefato local de browser tests', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-de43c096a545ca938dd2c8a7', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a29e229867d83801f8616c08', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-6d8226eeb3e0052a8f825009', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-50d5336a02c9d5d469637c44', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0806c188ee6ba69f17e2ee5a', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8186eb786c8dc868a2b91ef8', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-415582c29e153ddf474f56a8', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-59ae932334aa94878735d10b', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-949107f791f701cef5d935db', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-29b3e3e0be655509275eb36f', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-de146a1d30149b58ccd5265b', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e47b5aea5365eecfa1adb30d', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-88f554179e150a4d52c792d1', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-bd75b39a3f0b2510ffc954da', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b62368429bc9fc8a58b0758f', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-08469cdf7ba2f663d4e909cb', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-023732f9f9424541a921ef79', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5df5c79186e583909c387b0c', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d0876efaab5d20a03b875063', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ffbb13282f6505b8cfb8f03e', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-599f95e9cf847a83de1b8669', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-37adcf3cbb57894dacaa785d', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a0a2e687b82ca5cf5d800eee', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-71854a9cfe3d1a413f583822', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-403b57e5c88fa8dfc325e5ca', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c5f6d8e2f124f137e06f384d', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3d4e2d4a561182ca4296b67e', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-06a298149440dca62e0ae892', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4857b457a64c102faa65c3b1', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3703155124b37f98ce8b60f8', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-7bee560a0e816bb3ef442d6e', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-91fc435a4aa203b3ceb3789c', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_PRIMARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-77215ee5bef390684c16611b', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-494a77ea5bb5d70cc93be7f1', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c9aac5a74c137633c23e1496', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e08f5d822774da77e005d330', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2ae6f149e34cf030a8180dff', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4716cd7da359a339f0dce6d2', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e2171cf787b77201ea017b17', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-64780cb02cc2283189fde383', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-bc7cb76ac657a1e94025e48a', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-eed920ec6ffa81b88131ef2f', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8577457aeaa6959961295144', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b3b2984360177c23a4be50fe', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b4bfeb235caf83777f8906c2', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-442b4a83c13ee09caf393241', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c2eaf2b63cd0151fc7a9fd4a', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0f4b9707b3410cf3568f2130', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-49ee119844af234b7527dfc4', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ef34ab995d5ebc943ed74664', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-3c72f16b5ebd78a6c109fb29', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0e324139119c427eaaa8e8d1', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-10272482d4b956e681a14497', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-021477398767bcafcf83531a', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4055067de632dfdc58a88acf', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4302349a2b05288f1e17cde6', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-e8c6c4c3b2af7f65c6d805a0', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-b138783918176cba943a419e', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-92bcd2fabbcb13e57ad5ff86', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9a80bd202e05f74f584047c1', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-fd297dea859245c69e169abd', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8461b2d06e7803c7aab8da32', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-efaf13fae99dd78d0af897fb', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-044b1a9e107be3a403482c40', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.WINDOWS_SECONDARY, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8245e70cfd2327a77d2afce6', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-4c265a1e94788151d0c7be0e', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ab57d92b061c7aa03a3a05c6', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ec2561644e0cc9ed6ca8cc60', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-65dae66cce9824fc08d7a176', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-cf15a9e6a0b19a2f85f77ca1', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-85a96c5d8db9c0e15725efec', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-21e108085fd7e04584244626', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-11b99d8eae4b9ec05a269370', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-97fb1de21daafde0bdfc43f4', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-514e0ea0ec288fee77a5964a', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-96ce946cf2e7666b8df4df1e', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d9ff1455621c9dd41e85ac83', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2de8b1a3609ac55ba31a38d5', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9fb7be3da2dc39e1445d9249', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8a91c3732fa89fd97c7b92c6', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f07a6bd01f44f8e4c41e5926', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-660f1cfe3d6782a14d14c33e', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a4fa5b3c013e301b5c14a91c', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0be5caf9ccc3482973810099', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-866974963f37c9e25ec8c4a1', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-63af20b760582174b079b844', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f74cf17195ccad96912b397b', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a8edfc1e3746c7caa6555500', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d4a5d3721b63d8d2628eb772', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-aa20df07abee7826d40720ee', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2d1c812c013a7216a40840c0', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-478ddba91e69279d7853f3f6', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-6c29e36d03361cfc5d5614a0', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8ffd6e5a54a30fae7c21fe61', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c69253a44b79fac1528b8016', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-2da89dd0f72bfe4a4baddb22', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.CODEX_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-931d0b21a1d4fd5435ce1e82', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-24423fb1f95962644fa03c30', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ebeefc69a9ae7090581b899e', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ffe6d464eb61bfeff872abce', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f0f1076f39de814e39ed62ff', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0094b0569e88c487b1d25e8b', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5fb47fdcc71d2eadd2d127e5', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-773f7dd7534cda814fcab41a', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.INSPECT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RECORD_ONLY, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='modo inspecao nunca apaga artefato', + next_action='registrar footprint e executar apply apenas no fechamento', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a48fcf658c526ee090194702', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-78d8e17584859e552aa64939', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-22186de7da585a93c2e4dbf1', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d7b26e881b9dd6163bd29064', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-da2629bbb896db6c0e7816c4', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-9c4082195571622b8519a592', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-abbe368647f0cc271fc583bc', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-801686837cdd0efdf8535b28', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.APPLY, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-ec3a743bc5c2c4f12a6cc995', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-c524e34ee0f3c57150236ed1', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-665d598d83d1644834523c28', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-0507f35de9d7af5e4682ccea', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f39203fcf48d40c0fde39873', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-d82c118f638098b60fcc922f', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-6b7b68c69e4f39a86db00f38', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a8dd08171301be9e76ea99eb', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CLOSEOUT, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-f594ecaf402883094b519c30', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NONE, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'no_error', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-65f598fb2fc389796f8c94cd', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.NOT_FOUND, + status=HygienePolicyStatus.PASS, + remediation_actions=( + HygieneRemediationAction.VERIFY_ABSENT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='artefato ausente ou removivel por limpeza local aprovada', + next_action='manter ausente e registrar status', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-10f38167b6478d2843e53754', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.PERMISSION_DENIED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-8fb3249aacaa716aa7a781bb', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.DIRECTORY_NOT_EMPTY, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='diretorio ainda contem filho retido por erro anterior', + next_action='reduzir conteudo acessivel e registrar filhos retidos', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-87206ad2d906a5c7931801c1', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.FILE_LOCKED, + status=HygienePolicyStatus.OWNER_ACTION_REQUIRED, + remediation_actions=( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=True, + reason='ACL ou processo externo reteve caminho depois de remover filhos acessiveis', + next_action='registrar caminho retido e solicitar owner autorizado', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-a9220bd64ef925c8035d7753', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNSAFE_PATH, + status=HygienePolicyStatus.BLOCK_UNSAFE, + remediation_actions=( + HygieneRemediationAction.BLOCK_BEFORE_WRITE, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='path calculado sai do project_root ou cruza boundary de volume', + next_action='bloquear antes de qualquer escrita e registrar evidencia', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-5ed8e91cdd1948866fa1797b', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.CENTRAL_WRITE_DENIED, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + HygieneRemediationAction.UPDATE_SEMANTIC_SQL, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='pasta central recusou escrita, mas projeto real deve registrar status', + next_action='manter fallback no projeto real e registrar pendencia central', + ), + HygienePolicyCase( + case_id='workspace-hygiene-policy-25380e414006c8fcea2a80ae', + artifact_kind=HygieneArtifactKind.LOG_OUTPUT, + relative_path='logs', + environment=HygieneEnvironment.GITLAB_SERVER, + execution_mode=HygieneExecutionMode.CENTRAL_RECORD, + error_kind=HygieneErrorKind.UNKNOWN, + status=HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + remediation_actions=( + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + required_evidence=( + 'footprint_before', + 'footprint_after', + 'git_status_short', + 'node_modules_absent', + 'acl_error_excerpt', + 'logs locais de execucao', + ), + mcp_transit_required=True, + direct_delete_allowed=False, + reason='erro desconhecido deve ser evidenciado antes de nova tentativa', + next_action='registrar erro bruto redigido e reavaliar proxima rodada', + ), +) + + +def iter_policy_cases(): + return POLICY_CASES diff --git a/src/mais_humana/workspace_hygiene.py b/src/mais_humana/workspace_hygiene.py index ba09a99..ad4127f 100644 --- a/src/mais_humana/workspace_hygiene.py +++ b/src/mais_humana/workspace_hygiene.py @@ -13,7 +13,6 @@ import csv import io import json import os -import shutil from dataclasses import dataclass from enum import Enum from pathlib import Path @@ -196,13 +195,61 @@ def _footprint(path: Path, *, max_errors: int = 8) -> PathFootprint: return PathFootprint(True, True, False, child_count, byte_count, tuple(errors[:max_errors])) +def _delete_file(path: Path, errors: list[str], *, max_errors: int = 12) -> None: + try: + if not path.exists(): + return + path.unlink() + except OSError as exc: + if len(errors) < max_errors: + errors.append(f"{type(exc).__name__}: {exc}") + + +def _delete_empty_dir(path: Path, errors: list[str], *, max_errors: int = 12) -> None: + try: + if path.exists(): + path.rmdir() + except OSError as exc: + if len(errors) < max_errors: + errors.append(f"{type(exc).__name__}: {exc}") + + +def _delete_directory_best_effort(path: Path) -> tuple[bool, str]: + """Delete a directory while continuing after ACL errors. + + ``shutil.rmtree`` stops at the first inaccessible child on Windows. The + closeout hygiene needs a better operational behavior: remove every + accessible file/directory, retain only the ACL-blocked paths, and report the + retained evidence. + """ + + errors: list[str] = [] + + def on_walk_error(exc: OSError) -> None: + if len(errors) < 12: + errors.append(f"{type(exc).__name__}: {exc}") + + for current_root, dirnames, filenames in os.walk(path, topdown=False, onerror=on_walk_error): + current = Path(current_root) + for filename in filenames: + _delete_file(current / filename, errors) + for dirname in dirnames: + _delete_empty_dir(current / dirname, errors) + _delete_empty_dir(path, errors) + if not path.exists(): + return True, "" + message = "; ".join(merge_unique(errors)) + if not message: + message = "path retained after best-effort cleanup" + return False, message + + def _delete_path(path: Path) -> tuple[bool, str]: try: if not path.exists(): return False, "" if path.is_dir(): - shutil.rmtree(path) - return True, "" + return _delete_directory_best_effort(path) path.unlink() return True, "" except OSError as exc: diff --git a/src/mais_humana/workspace_hygiene_policy.py b/src/mais_humana/workspace_hygiene_policy.py new file mode 100644 index 0000000..aed79f6 --- /dev/null +++ b/src/mais_humana/workspace_hygiene_policy.py @@ -0,0 +1,470 @@ +"""Workspace hygiene retention policy. + +The closeout rule is simple to say and surprisingly easy to get wrong on +Windows mirrors: remove local build/test artifacts, but keep going when ACLs +retain a child path and record exactly what still needs an authorized owner. +This module turns that rule into executable policy cases that can be exposed to +MCP, tested by Codex, and attached to the service-order closeout. +""" + +from __future__ import annotations + +import csv +import io +import json +from dataclasses import dataclass +from enum import Enum +from pathlib import Path +from typing import Any, Iterable, Sequence + +from .models import GeneratedFile, as_plain_data, merge_unique, utc_now +from .repository_mesh import stable_digest +from .storage import connect, upsert_files + + +class HygieneArtifactKind(str, Enum): + """Artifacts governed by the cleanup policy.""" + + PYTHON_TEST_TEMP = "python_test_temp" + NODE_DEPENDENCIES = "node_dependencies" + PYTHON_CACHE = "python_cache" + WRANGLER_CACHE = "wrangler_cache" + FRONTEND_CACHE = "frontend_cache" + COVERAGE_OUTPUT = "coverage_output" + TEST_REPORT = "test_report" + LOG_OUTPUT = "log_output" + + +class HygieneErrorKind(str, Enum): + """Filesystem or operational issue observed during cleanup.""" + + NONE = "none" + NOT_FOUND = "not_found" + PERMISSION_DENIED = "permission_denied" + DIRECTORY_NOT_EMPTY = "directory_not_empty" + FILE_LOCKED = "file_locked" + UNSAFE_PATH = "unsafe_path" + CENTRAL_WRITE_DENIED = "central_write_denied" + UNKNOWN = "unknown" + + +class HygieneExecutionMode(str, Enum): + """Execution mode for a cleanup case.""" + + INSPECT = "inspect" + APPLY = "apply" + CLOSEOUT = "closeout" + CENTRAL_RECORD = "central_record" + + +class HygieneEnvironment(str, Enum): + """Environment where a cleanup case can run.""" + + WINDOWS_PRIMARY = "windows_primary" + WINDOWS_SECONDARY = "windows_secondary" + CODEX_SERVER = "codex_server" + GITLAB_SERVER = "gitlab_server" + + +class HygienePolicyStatus(str, Enum): + """Decision for one hygiene policy case.""" + + PASS = "pass" + RETAIN_WITH_EVIDENCE = "retain_with_evidence" + OWNER_ACTION_REQUIRED = "owner_action_required" + BLOCK_UNSAFE = "block_unsafe" + RECORD_ONLY = "record_only" + + +class HygieneRemediationAction(str, Enum): + """Action recommended by a policy case.""" + + VERIFY_ABSENT = "verify_absent" + BEST_EFFORT_DELETE = "best_effort_delete" + CONTINUE_AFTER_CHILD_ERROR = "continue_after_child_error" + ESCALATE_OWNER = "escalate_owner" + RECORD_ACL_EXCEPTION = "record_acl_exception" + BLOCK_BEFORE_WRITE = "block_before_write" + WRITE_STATUS_ARTIFACT = "write_status_artifact" + UPDATE_SEMANTIC_SQL = "update_semantic_sql" + + +ARTIFACT_TARGETS: tuple[tuple[HygieneArtifactKind, str, str], ...] = ( + (HygieneArtifactKind.PYTHON_TEST_TEMP, ".test-tmp", "scratch criado por testes Python e comandos de validacao"), + (HygieneArtifactKind.NODE_DEPENDENCIES, "node_modules", "dependencias Node locais que nao devem sobreviver ao fechamento"), + (HygieneArtifactKind.PYTHON_CACHE, "__pycache__", "cache Python recompilavel"), + (HygieneArtifactKind.PYTHON_CACHE, ".pytest_cache", "cache pytest local"), + (HygieneArtifactKind.WRANGLER_CACHE, ".wrangler", "cache local do Wrangler"), + (HygieneArtifactKind.FRONTEND_CACHE, ".next", "build cache frontend"), + (HygieneArtifactKind.FRONTEND_CACHE, ".vite", "build cache frontend"), + (HygieneArtifactKind.COVERAGE_OUTPUT, "coverage", "saida local de cobertura"), + (HygieneArtifactKind.TEST_REPORT, "test-results", "saida local de testes"), + (HygieneArtifactKind.TEST_REPORT, "playwright-report", "relatorio local de browser tests"), + (HygieneArtifactKind.TEST_REPORT, "blob-report", "artefato local de browser tests"), + (HygieneArtifactKind.LOG_OUTPUT, "logs", "logs locais de execucao"), +) + +POLICY_TRANSIT_FIELDS: tuple[str, ...] = ( + "origin", + "destination", + "tool", + "payload", + "actor", + "permission", + "result", + "traceId", + "auditId", + "timestamp", +) + + +@dataclass(frozen=True, slots=True) +class HygienePolicyCase: + """One policy case for local artifact cleanup.""" + + case_id: str + artifact_kind: HygieneArtifactKind + relative_path: str + environment: HygieneEnvironment + execution_mode: HygieneExecutionMode + error_kind: HygieneErrorKind + status: HygienePolicyStatus + remediation_actions: tuple[HygieneRemediationAction, ...] + required_evidence: tuple[str, ...] + mcp_transit_required: bool + direct_delete_allowed: bool + reason: str + next_action: str + + def to_dict(self) -> dict[str, Any]: + return as_plain_data(self) + + +@dataclass(frozen=True, slots=True) +class HygienePolicyReport: + """Policy report used by CLI, Markdown, CSV, and tests.""" + + report_id: str + generated_at: str + cases: tuple[HygienePolicyCase, ...] + summary: tuple[str, ...] + + @property + def cases_count(self) -> int: + return len(self.cases) + + @property + def owner_action_count(self) -> int: + return sum(1 for case in self.cases if case.status == HygienePolicyStatus.OWNER_ACTION_REQUIRED) + + @property + def unsafe_block_count(self) -> int: + return sum(1 for case in self.cases if case.status == HygienePolicyStatus.BLOCK_UNSAFE) + + def to_dict(self) -> dict[str, Any]: + data = as_plain_data(self) + data["cases_count"] = self.cases_count + data["owner_action_count"] = self.owner_action_count + data["unsafe_block_count"] = self.unsafe_block_count + return data + + +def classify_policy_case( + *, + artifact_kind: HygieneArtifactKind, + relative_path: str, + environment: HygieneEnvironment, + execution_mode: HygieneExecutionMode, + error_kind: HygieneErrorKind, +) -> tuple[HygienePolicyStatus, tuple[HygieneRemediationAction, ...], bool, str, str]: + """Classify one cleanup situation into an auditable policy decision.""" + + if error_kind == HygieneErrorKind.UNSAFE_PATH: + return ( + HygienePolicyStatus.BLOCK_UNSAFE, + (HygieneRemediationAction.BLOCK_BEFORE_WRITE, HygieneRemediationAction.WRITE_STATUS_ARTIFACT), + False, + "path calculado sai do project_root ou cruza boundary de volume", + "bloquear antes de qualquer escrita e registrar evidencia", + ) + if execution_mode == HygieneExecutionMode.INSPECT: + return ( + HygienePolicyStatus.RECORD_ONLY, + (HygieneRemediationAction.VERIFY_ABSENT, HygieneRemediationAction.WRITE_STATUS_ARTIFACT), + False, + "modo inspecao nunca apaga artefato", + "registrar footprint e executar apply apenas no fechamento", + ) + if error_kind in {HygieneErrorKind.NONE, HygieneErrorKind.NOT_FOUND}: + return ( + HygienePolicyStatus.PASS, + (HygieneRemediationAction.VERIFY_ABSENT,), + True, + "artefato ausente ou removivel por limpeza local aprovada", + "manter ausente e registrar status", + ) + if error_kind in {HygieneErrorKind.PERMISSION_DENIED, HygieneErrorKind.FILE_LOCKED}: + return ( + HygienePolicyStatus.OWNER_ACTION_REQUIRED, + ( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.ESCALATE_OWNER, + HygieneRemediationAction.RECORD_ACL_EXCEPTION, + ), + True, + "ACL ou processo externo reteve caminho depois de remover filhos acessiveis", + "registrar caminho retido e solicitar owner autorizado", + ) + if error_kind == HygieneErrorKind.DIRECTORY_NOT_EMPTY: + return ( + HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + ( + HygieneRemediationAction.BEST_EFFORT_DELETE, + HygieneRemediationAction.CONTINUE_AFTER_CHILD_ERROR, + HygieneRemediationAction.WRITE_STATUS_ARTIFACT, + ), + True, + "diretorio ainda contem filho retido por erro anterior", + "reduzir conteudo acessivel e registrar filhos retidos", + ) + if error_kind == HygieneErrorKind.CENTRAL_WRITE_DENIED: + return ( + HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + (HygieneRemediationAction.WRITE_STATUS_ARTIFACT, HygieneRemediationAction.UPDATE_SEMANTIC_SQL), + False, + "pasta central recusou escrita, mas projeto real deve registrar status", + "manter fallback no projeto real e registrar pendencia central", + ) + return ( + HygienePolicyStatus.RETAIN_WITH_EVIDENCE, + (HygieneRemediationAction.WRITE_STATUS_ARTIFACT,), + False, + "erro desconhecido deve ser evidenciado antes de nova tentativa", + "registrar erro bruto redigido e reavaliar proxima rodada", + ) + + +def build_policy_cases() -> tuple[HygienePolicyCase, ...]: + """Build the deterministic matrix of hygiene policy cases.""" + + cases: list[HygienePolicyCase] = [] + for artifact_kind, relative_path, description in ARTIFACT_TARGETS: + for environment in HygieneEnvironment: + for execution_mode in HygieneExecutionMode: + for error_kind in HygieneErrorKind: + status, actions, direct_delete_allowed, reason, next_action = classify_policy_case( + artifact_kind=artifact_kind, + relative_path=relative_path, + environment=environment, + execution_mode=execution_mode, + error_kind=error_kind, + ) + seed = { + "artifact": artifact_kind.value, + "path": relative_path, + "environment": environment.value, + "mode": execution_mode.value, + "error": error_kind.value, + } + evidence = ( + "footprint_before", + "footprint_after", + "git_status_short", + "node_modules_absent", + "acl_error_excerpt" if error_kind != HygieneErrorKind.NONE else "no_error", + description, + ) + cases.append( + HygienePolicyCase( + case_id=f"workspace-hygiene-policy-{stable_digest(seed, 24)}", + artifact_kind=artifact_kind, + relative_path=relative_path, + environment=environment, + execution_mode=execution_mode, + error_kind=error_kind, + status=status, + remediation_actions=actions, + required_evidence=evidence, + mcp_transit_required=True, + direct_delete_allowed=direct_delete_allowed, + reason=reason, + next_action=next_action, + ) + ) + return tuple(cases) + + +def build_hygiene_policy_cases(*, use_generated: bool = True) -> tuple[HygienePolicyCase, ...]: + """Return generated policy cases when available, otherwise build runtime cases.""" + + if use_generated: + try: + from .generated_workspace_hygiene_policy import iter_policy_cases + + return tuple(iter_policy_cases()) + except (ImportError, AttributeError): + pass + return build_policy_cases() + + +def build_hygiene_policy_report(*, use_generated: bool = True) -> HygienePolicyReport: + """Build a compact policy report.""" + + cases = build_hygiene_policy_cases(use_generated=use_generated) + summary = ( + f"Policy cases: {len(cases)}.", + f"Owner action cases: {sum(1 for case in cases if case.status == HygienePolicyStatus.OWNER_ACTION_REQUIRED)}.", + f"Unsafe path blocks: {sum(1 for case in cases if case.status == HygienePolicyStatus.BLOCK_UNSAFE)}.", + "Best-effort cleanup must continue after child ACL errors and retain only inaccessible paths.", + ) + return HygienePolicyReport( + report_id=f"workspace-hygiene-policy-{stable_digest([case.case_id for case in cases], 16)}", + generated_at=utc_now(), + cases=cases, + summary=summary, + ) + + +def policy_payload(report: HygienePolicyReport, *, limit_cases: int = 80) -> dict[str, Any]: + """Return compact JSON payload for the policy report.""" + + payload = report.to_dict() + payload["transit_fields"] = list(POLICY_TRANSIT_FIELDS) + payload["cases"] = [case.to_dict() for case in report.cases[: max(0, limit_cases)]] + payload["cases_total"] = len(report.cases) + return payload + + +def policy_case_rows(cases: Sequence[HygienePolicyCase]) -> list[list[str]]: + """Return CSV rows for policy cases.""" + + rows = [ + [ + "case_id", + "artifact_kind", + "relative_path", + "environment", + "execution_mode", + "error_kind", + "status", + "remediation_actions", + "direct_delete_allowed", + "reason", + "next_action", + ] + ] + for case in cases: + rows.append( + [ + case.case_id, + case.artifact_kind.value, + case.relative_path, + case.environment.value, + case.execution_mode.value, + case.error_kind.value, + case.status.value, + " | ".join(action.value for action in case.remediation_actions), + "yes" if case.direct_delete_allowed else "no", + case.reason, + case.next_action, + ] + ) + return rows + + +def rows_to_csv(rows: Sequence[Sequence[str]]) -> str: + """Serialize rows to CSV text.""" + + buffer = io.StringIO() + writer = csv.writer(buffer, lineterminator="\n") + writer.writerows(rows) + return buffer.getvalue() + + +def policy_markdown(report: HygienePolicyReport, *, limit_cases: int = 40) -> str: + """Render the policy report in Markdown.""" + + lines = [ + "# Politica de higiene de workspace", + "", + f"- report_id: `{report.report_id}`", + f"- generated_at: `{report.generated_at}`", + f"- cases: `{report.cases_count}`", + f"- owner_action_cases: `{report.owner_action_count}`", + f"- unsafe_block_cases: `{report.unsafe_block_count}`", + "", + "## Resumo", + "", + ] + lines.extend(f"- {item}" for item in report.summary) + lines.extend(["", "## Casos amostrais", ""]) + for case in report.cases[: max(0, limit_cases)]: + actions = ", ".join(action.value for action in case.remediation_actions) + lines.append( + f"- `{case.case_id}` `{case.relative_path}` `{case.environment.value}` `{case.execution_mode.value}` " + f"`{case.error_kind.value}` -> `{case.status.value}` actions `{actions}`" + ) + lines.extend( + [ + "", + "## Regra operacional", + "", + "- Remover somente artefatos locais aprovados.", + "- Continuar a limpeza depois de erro de filho quando o caminho ainda estiver dentro do projeto.", + "- Registrar WinError 5, arquivo em uso ou pasta nao vazia como pendencia de owner quando persistirem.", + "- Nao apagar paths fora do project_root.", + "", + ] + ) + return "\n".join(lines) + + +def generated_files(project_root: Path) -> tuple[GeneratedFile, ...]: + """Return semantic records for policy artifacts.""" + + relation = "0041_EXECUTIVA__resolver-test-tmp-bloqueado-por-acl" + specs = ( + ("dados/workspace-hygiene-policy.json", "Politica JSON de retencao e limpeza de workspace.", "workspace hygiene policy", "json"), + ("matrizes/workspace-hygiene-policy-cases.csv", "Matriz de casos de higiene e ACL.", "workspace hygiene policy cases", "csv"), + ("ecossistema/WORKSPACE-HYGIENE-POLICY.md", "Relatorio humano da politica de higiene.", "workspace hygiene policy report", "markdown"), + ) + return tuple( + GeneratedFile( + path=str(project_root / relative), + description=description, + function=function, + file_type=file_type, + changed_by="mais_humana.workspace_hygiene_policy", + change_summary="Criada politica executavel para limpeza parcial, ACL, owner action e evidencia de fechamento.", + relation_to_order=relation, + ) + for relative, description, function, file_type in specs + ) + + +def write_policy_artifacts(report: HygienePolicyReport, project_root: Path) -> tuple[GeneratedFile, ...]: + """Write policy JSON, CSV, Markdown, and semantic file records.""" + + targets = ( + (project_root / "dados" / "workspace-hygiene-policy.json", json.dumps(policy_payload(report, limit_cases=160), ensure_ascii=False, indent=2, sort_keys=True)), + (project_root / "matrizes" / "workspace-hygiene-policy-cases.csv", rows_to_csv(policy_case_rows(report.cases))), + (project_root / "ecossistema" / "WORKSPACE-HYGIENE-POLICY.md", policy_markdown(report, limit_cases=80)), + ) + for path, text in targets: + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(text, encoding="utf-8") + records = generated_files(project_root) + with connect(project_root / "controle-semantico.sqlite") as conn: + upsert_files(conn, records) + conn.commit() + return records + + +def run_hygiene_policy(project_root: Path, *, use_generated: bool = True) -> tuple[HygienePolicyReport, tuple[GeneratedFile, ...]]: + """Build and persist the workspace hygiene policy artifacts.""" + + report = build_hygiene_policy_report(use_generated=use_generated) + records = write_policy_artifacts(report, project_root) + return report, records + diff --git a/tests/test_workspace_hygiene_policy.py b/tests/test_workspace_hygiene_policy.py new file mode 100644 index 0000000..695b069 --- /dev/null +++ b/tests/test_workspace_hygiene_policy.py @@ -0,0 +1,64 @@ +from __future__ import annotations + +import json +import unittest + +from mais_humana.cli import main +from mais_humana.storage import table_counts +from mais_humana.workspace_hygiene_policy import ( + HygieneErrorKind, + HygieneExecutionMode, + HygienePolicyStatus, + build_hygiene_policy_report, + build_policy_cases, + policy_payload, +) +from tests.helpers import make_tmp + + +class WorkspaceHygienePolicyTests(unittest.TestCase): + def test_runtime_policy_contains_acl_owner_cases(self) -> None: + report = build_hygiene_policy_report(use_generated=False) + + self.assertGreaterEqual(report.cases_count, 1000) + self.assertGreater(report.owner_action_count, 0) + self.assertGreater(report.unsafe_block_count, 0) + self.assertTrue( + any( + case.error_kind == HygieneErrorKind.PERMISSION_DENIED + and case.execution_mode == HygieneExecutionMode.APPLY + and case.status == HygienePolicyStatus.OWNER_ACTION_REQUIRED + for case in report.cases + ) + ) + + def test_payload_is_limited_but_keeps_totals(self) -> None: + report = build_hygiene_policy_report(use_generated=False) + payload = policy_payload(report, limit_cases=7) + + self.assertEqual(len(payload["cases"]), 7) + self.assertEqual(payload["cases_total"], report.cases_count) + self.assertIn("traceId", payload["transit_fields"]) + + def test_generated_policy_matches_runtime_case_count(self) -> None: + runtime_count = len(build_policy_cases()) + generated = build_hygiene_policy_report(use_generated=True) + + self.assertEqual(generated.cases_count, runtime_count) + + def test_cli_writes_policy_artifacts_and_sql(self) -> None: + project = make_tmp() + code = main(["workspace-hygiene-policy", "--project-root", str(project), "--no-generated", "--limit", "5"]) + + self.assertEqual(code, 0) + self.assertTrue((project / "dados" / "workspace-hygiene-policy.json").exists()) + self.assertTrue((project / "matrizes" / "workspace-hygiene-policy-cases.csv").exists()) + self.assertTrue((project / "ecossistema" / "WORKSPACE-HYGIENE-POLICY.md").exists()) + payload = json.loads((project / "dados" / "workspace-hygiene-policy.json").read_text(encoding="utf-8")) + self.assertGreaterEqual(payload["cases_total"], 1000) + self.assertGreaterEqual(table_counts(project / "controle-semantico.sqlite").get("files", 0), 3) + + +if __name__ == "__main__": + unittest.main() + diff --git a/tools/generate_workspace_hygiene_policy.py b/tools/generate_workspace_hygiene_policy.py new file mode 100644 index 0000000..fae0500 --- /dev/null +++ b/tools/generate_workspace_hygiene_policy.py @@ -0,0 +1,120 @@ +"""Generate importable workspace hygiene policy cases.""" + +from __future__ import annotations + +from pathlib import Path + + +ROOT = Path(__file__).resolve().parents[1] +SRC = ROOT / "src" +OUTPUT = SRC / "mais_humana" / "generated_workspace_hygiene_policy.py" + + +def ensure_import_path() -> None: + import sys + + src = str(SRC) + if src not in sys.path: + sys.path.insert(0, src) + + +def q(value: object) -> str: + return repr(str(value)) + + +def bool_literal(value: bool) -> str: + return "True" if value else "False" + + +def tuple_enum(values: object) -> str: + items = list(values) + if not items: + return "()" + lines = ["("] + for item in items: + lines.append(f" HygieneRemediationAction.{getattr(item, 'name')},") + lines.append(" )") + return "\n".join(lines) + + +def tuple_str(values: object) -> str: + items = [str(value) for value in values] + if not items: + return "()" + lines = ["("] + for item in items: + lines.append(f" {q(item)},") + lines.append(" )") + return "\n".join(lines) + + +def case_block(case: object) -> str: + return "\n".join( + [ + " HygienePolicyCase(", + f" case_id={q(getattr(case, 'case_id'))},", + f" artifact_kind=HygieneArtifactKind.{getattr(case, 'artifact_kind').name},", + f" relative_path={q(getattr(case, 'relative_path'))},", + f" environment=HygieneEnvironment.{getattr(case, 'environment').name},", + f" execution_mode=HygieneExecutionMode.{getattr(case, 'execution_mode').name},", + f" error_kind=HygieneErrorKind.{getattr(case, 'error_kind').name},", + f" status=HygienePolicyStatus.{getattr(case, 'status').name},", + " remediation_actions=" + tuple_enum(getattr(case, "remediation_actions")) + ",", + " required_evidence=" + tuple_str(getattr(case, "required_evidence")) + ",", + f" mcp_transit_required={bool_literal(getattr(case, 'mcp_transit_required'))},", + f" direct_delete_allowed={bool_literal(getattr(case, 'direct_delete_allowed'))},", + f" reason={q(getattr(case, 'reason'))},", + f" next_action={q(getattr(case, 'next_action'))},", + " ),", + ] + ) + + +def main() -> int: + ensure_import_path() + from mais_humana.workspace_hygiene_policy import build_policy_cases + + cases = build_policy_cases() + lines = [ + '"""Generated workspace hygiene policy cases.', + "", + "Do not edit this file by hand. Regenerate with:", + "", + " python tools/generate_workspace_hygiene_policy.py", + '"""', + "", + "from __future__ import annotations", + "", + "from .workspace_hygiene_policy import (", + " HygieneArtifactKind,", + " HygieneEnvironment,", + " HygieneErrorKind,", + " HygieneExecutionMode,", + " HygienePolicyCase,", + " HygienePolicyStatus,", + " HygieneRemediationAction,", + ")", + "", + f"GENERATED_POLICY_CASES_COUNT = {len(cases)}", + "", + "POLICY_CASES = (", + ] + lines.extend(case_block(case) for case in cases) + lines.extend( + [ + ")", + "", + "", + "def iter_policy_cases():", + " return POLICY_CASES", + "", + ] + ) + OUTPUT.write_text("\n".join(lines), encoding="utf-8") + print(f"generated {OUTPUT} cases={len(cases)}") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) +