docs(secrets): build Infisical metadata inventory and migration map #735

Open
opened 2026-06-06 21:01:10 +02:00 by pdurlej · 4 comments
Owner

Całe bezpieczeństwo systemu opiera się na InfiSkal-u, więc trzeba robić audyty regularnie, aby sprawdzić, czy wszystko z InfiSkal-em działa prawidłowo.

Nie czytam wszystkiego dokładnie, aby mieć pewność, że wszystko jest zrobione.

Potrzebny będzie pewnie jakiś admin read, który będzie w jakiś sposób dostępny raz na jakiś czas.

Teraz to trzeba zrobić po raz pierwszy, ale będzie też konieczność, aby przeprowadzać to regularnie.

Całe bezpieczeństwo systemu opiera się na InfiSkal-u, więc trzeba robić audyty regularnie, aby sprawdzić, czy wszystko z InfiSkal-em działa prawidłowo. Nie czytam wszystkiego dokładnie, aby mieć pewność, że wszystko jest zrobione. Potrzebny będzie pewnie jakiś admin read, który będzie w jakiś sposób dostępny raz na jakiś czas. Teraz to trzeba zrobić po raz pierwszy, ale będzie też konieczność, aby przeprowadzać to regularnie.
Collaborator

Codex added a containment receipt PR for the 2026-06-04 secret exposure incident: #737

Status recorded there: containment_complete_with_deferred_exceptions, not full all-clear.

Retained exceptions remain: FORGEJO_API_TOKEN and FORGEJO_ADMIN_PAT_TEMP. Final all-clear still depends on full Infisical/runtime metadata comparison and this audit issue being closed with evidence.

Codex added a containment receipt PR for the 2026-06-04 secret exposure incident: https://git.pdurlej.com/pdurlej/platform/pulls/737 Status recorded there: containment_complete_with_deferred_exceptions, not full all-clear. Retained exceptions remain: FORGEJO_API_TOKEN and FORGEJO_ADMIN_PAT_TEMP. Final all-clear still depends on full Infisical/runtime metadata comparison and this audit issue being closed with evidence.
Collaborator

Codex finalization run after PR #737 merge.

Evidence gathered

Platform release root on RS2000:

  • promoted /opt/pdurlej-platform/current to 53c881523dd9398cf3752afa51eb27cf3f871799
  • Agaria modules now report lifecycle=parked, status=OK, container_state=paused, smoke=OK

OpenClaw/VPS1000:

  • PR #437 merged
  • live drop-in has OPENCLAW_GATEWAY_TAILSCALE_MODE=off
  • live drop-in sources both runtime.env and matrix.env
  • Matrix/Signal verifier OK
  • local gateway HTTP 200
  • MagicDNS gateway HTTP 200
  • recent tailscale serve failed count 0

Secret recovery metadata-only verifier:

  • schema: platform_secret_recovery_report.v1
  • records: 277
  • findings total: 67
  • findings by type:
    • runtime_secret_missing_from_infisical: 53
    • declared_but_not_seen_in_runtime: 12
    • infisical_runtime_length_mismatch: 2
  • runtime-only source-of-truth records: 53
  • records with runtime consumers: 78
  • records with identity checks: 11

Patchwarden readiness:

  • schema: patchwarden_bot_identity.v1
  • secret present: true
  • identity status: identity_ok
  • runtime consumers: 0
  • repo consumers: 10
  • findings: none

Closure decision

Do not close this audit yet. Immediate containment is documented in PR #737, but the full metadata comparison still shows drift. This issue remains the ledger for cleaning or classifying those findings.

No secret values, token prefixes/suffixes, hashes, fingerprints, DSNs, env dumps, or value lengths are included in this comment.

Codex finalization run after PR #737 merge. ## Evidence gathered Platform release root on RS2000: - promoted `/opt/pdurlej-platform/current` to `53c881523dd9398cf3752afa51eb27cf3f871799` - Agaria modules now report `lifecycle=parked`, `status=OK`, `container_state=paused`, `smoke=OK` OpenClaw/VPS1000: - PR #437 merged - live drop-in has `OPENCLAW_GATEWAY_TAILSCALE_MODE=off` - live drop-in sources both `runtime.env` and `matrix.env` - Matrix/Signal verifier OK - local gateway HTTP 200 - MagicDNS gateway HTTP 200 - recent `tailscale serve failed` count 0 Secret recovery metadata-only verifier: - schema: `platform_secret_recovery_report.v1` - records: 277 - findings total: 67 - findings by type: - `runtime_secret_missing_from_infisical`: 53 - `declared_but_not_seen_in_runtime`: 12 - `infisical_runtime_length_mismatch`: 2 - runtime-only source-of-truth records: 53 - records with runtime consumers: 78 - records with identity checks: 11 Patchwarden readiness: - schema: `patchwarden_bot_identity.v1` - secret present: true - identity status: `identity_ok` - runtime consumers: 0 - repo consumers: 10 - findings: none ## Closure decision Do not close this audit yet. Immediate containment is documented in PR #737, but the full metadata comparison still shows drift. This issue remains the ledger for cleaning or classifying those findings. No secret values, token prefixes/suffixes, hashes, fingerprints, DSNs, env dumps, or value lengths are included in this comment.
codex changed title from audyt infiscal to docs(secrets): build Infisical metadata inventory and migration map 2026-06-07 15:41:07 +02:00
Collaborator

Role: executor
Intent: synthesize
Needs owner: no

Dopisuję kontekst z przerwanego wątku Codex, żeby to issue było trwałym miejscem pamięci dla pierwszego porządnego audytu Infisicala.

Cel

Zbudować bezpieczny, powtarzalny audyt Infisicala dla platformy: mapa ścieżek, nazw sekretów, klas sekretów, machine identities, ról i dodatkowych privilege, bez czytania lub publikowania wartości sekretów. To ma zmniejszyć chaos poznawczy agentów: zamiast zgadywać, gdzie jest PAT, SSH key, provider token albo app config, agent ma sprawdzić mapę i wiedzieć, jak używać Infisicala bez proszenia Piotra o ręczne tłumaczenie.

Dlaczego to istnieje

Infisical jest kanonicznym backendem sekretów dla RS2000 i VPS1000. Po M01/M04 okazało się, że brak jawnej mapy sekretów powoduje błądzenie agentów, powtarzanie pytań o tokeny, fałszywe założenia o scope’ach i niepotrzebną frustrację operatora. Ten audyt ma być odpowiednikiem indeksu/mapy, nie migracją i nie rotacją.

Koncept podejścia

Pierwszy przebieg ma być metadata-only:

  • czytamy foldery/ścieżki,
  • czytamy nazwy sekretów,
  • czytamy envy,
  • czytamy machine identities, project memberships, role i additional privileges,
  • klasyfikujemy po nazwie/ścieżce, np. pat, ssh-key, provider-key, api-token, db-password, app-config, break-glass, legacy, unknown,
  • każdy wynik klasyfikacji ma confidence high|medium|low,
  • unknown zostaje unknown, bez zgadywania wartości.

Twardo poza zakresem pierwszego przebiegu:

  • brak secretValue,
  • brak kopiowania sekretów,
  • brak rename,
  • brak delete,
  • brak rotacji,
  • brak zmiany scope’ów machine identity,
  • brak drukowania auth headerów, bearerów, PAT-ów, private key markerów lub DSN z hasłami.

Docelowy output

Proponowany kształt z poprzedniego wątku:

  • platformctl secrets infisical inventory --metadata-only --format json|markdown
  • state/infisical/reports/latest-inventory.json
  • state/infisical/reports/latest-inventory.md
  • docs/infisical/key-map.md
  • docs/infisical/target-structure.md
  • docs/infisical/migration-candidates.md

Raport JSON/Markdown powinien mieć co najmniej:

  • complete: true|false,
  • counts: paths, secret names, classes, migration candidates,
  • warnings bez wartości sekretów,
  • identity/membership/privilege summary,
  • root-level secrets oznaczone jako needs-move,
  • kandydatów migracji tylko jeśli inventory jest kompletne.

Docelowa struktura Infisical

Zachować istniejące dobre rodziny:

  • /home-platform/providers
  • /home-platform/forgejo_accounts
  • /home-platform/infra
  • /home-platform/apps/<app>
  • /home-platform/agent_access/<type>/<domain>/<actor-or-purpose>
  • /home-platform/safe-session
  • /home-platform/backups
  • /home-platform/matrix_accounts
  • /home-platform/deprecated/<yyyy-mm-dd>/<source>

Root-level sekrety pod /home-platform traktować jako needs-move, ale nie przenosić automatycznie.

Dual-path migration prep, nie migracja

Audyt może przygotować kandydatów migracji, ale nie może ich wykonać. Dla każdego kandydata powinien powstać rekord:

  • source_path/key,
  • target_path/key,
  • owner/system,
  • consumers jeśli znane,
  • risk,
  • copy_allowed: false,
  • wymagany gate,
  • cutover/rollback.

Kopiowanie wartości do nowych ścieżek powinno być osobnym krokiem z frazą typu:

infisical-dual-path-copy-approved

Stare ścieżki pozostają aktywne do czasu smoke consumerów i osobnego cleanup gate. Sama obecność frazy w repo nie jest zgodą operacyjną; tooling musi wiązać zgodę z live kontekstem operatora i konkretnymi kandydatami.

Wnioski z Oracle review z poprzedniego wątku

Oracle ocenił pierwotną implementację jako NO-GO as-is dla merge, ale z dobrym kierunkiem. Wskazane poprawki, które powinny wejść do finalnej wersji:

  • używać poprawnych parametrów Infisical API: includeImports=false, recursive=false, includePersonalOverrides=false, expandSecretReferences=false, viewSecretValue=false,
  • walidować secretPath zwracany przez API; jeśli różni się od żądanej ścieżki, drop/warning,
  • przy jakichkolwiek 401/403/404/warnings ustawiać complete=false, nie generować kandydatów migracji i kończyć kodem 8/unknown state,
  • additional privileges pobierać szczegółowo per ID, jeśli list endpoint nie zawiera pełnych permissions,
  • output JSON i Markdown przepuszczać przez redaction guard,
  • nie drukować surowych błędów API w CLI, tylko bezpieczne komunikaty,
  • traktować nazwy kluczy i segmenty ścieżek jako potencjalnie wrażliwą metadane; wykrywać i redagować token-like names,
  • uwzględniać targetPathPresent i targetExists dla kandydatów migracji,
  • Markdown powinien pokazywać membership/role/additional privilege summary, nie tylko nazwy identities.

Ważna decyzja o modelach / review

Nie wysyłać prywatnych diffów ani plików repo do cloudowego DeepSeek V4/Ollama cloud. Jeśli potrzebny drugi model:

  • wysyłać tylko pseudoanonimizowane metadane/dokumenty, nie pełny diff,
  • preferować lokalny model przy delikatnych materiałach,
  • przed cloud review przygotować osobny, krótki, bezsekretowy pakiet: cel, założenia, listę ryzyk, listę decyzji, bez nazw prywatnych sekretów i bez repo diffu.

Acceptance criteria

  • Jest komenda read-only platformctl secrets infisical inventory albo równoważny skrypt.
  • Testy potwierdzają, że output nie zawiera secretValue, bearerów, PAT-like 40-hex, private key markerów ani DSN z hasłami.
  • Testy obejmują klasyfikator nazw/ścieżek.
  • Testy obejmują secretPath mismatch i partial inventory.
  • Live dry-run generuje raport JSON/Markdown bez wartości sekretów.
  • docs/infisical/key-map.md opisuje aktualną mapę i datę refreshu.
  • docs/infisical/target-structure.md opisuje docelową strukturę.
  • docs/infisical/migration-candidates.md opisuje kandydatów bez wykonywania migracji.
  • Żaden krok nie kopiuje, nie usuwa, nie rotuje i nie zmienia sekretów.

Suggested labels / routing

To issue powinno być traktowane jako security-sensitive i procesowe:

  • class/security-sensitive
  • risk/process
  • opcjonalnie risk/exposure
  • raczej M03 / Secrets and access hardening albo M10 Improvements, zależnie od aktualnego sprintu.

Trace

  • Source: Codex thread, Infisical inventory + dual-path migration planning, 2026-05-30/2026-06-07
  • Relevant docs already in repo: docs/infisical/key-map.md, docs/forgejo-agent-operations.md, docs/agents/agent-sos.md
  • Important boundary: metadata-only first; migration later behind explicit gates.

Next: przyszły agent powinien najpierw sprawdzić, czy obecne docs/infisical/key-map.md jest wystarczająco aktualne, a potem rozbić to issue na atomic task albo wdrożyć minimalny read-only inventory command.

**Role:** executor **Intent:** synthesize **Needs owner:** no Dopisuję kontekst z przerwanego wątku Codex, żeby to issue było trwałym miejscem pamięci dla pierwszego porządnego audytu Infisicala. ## Cel Zbudować bezpieczny, powtarzalny audyt Infisicala dla platformy: mapa ścieżek, nazw sekretów, klas sekretów, machine identities, ról i dodatkowych privilege, bez czytania lub publikowania wartości sekretów. To ma zmniejszyć chaos poznawczy agentów: zamiast zgadywać, gdzie jest PAT, SSH key, provider token albo app config, agent ma sprawdzić mapę i wiedzieć, jak używać Infisicala bez proszenia Piotra o ręczne tłumaczenie. ## Dlaczego to istnieje Infisical jest kanonicznym backendem sekretów dla RS2000 i VPS1000. Po M01/M04 okazało się, że brak jawnej mapy sekretów powoduje błądzenie agentów, powtarzanie pytań o tokeny, fałszywe założenia o scope’ach i niepotrzebną frustrację operatora. Ten audyt ma być odpowiednikiem indeksu/mapy, nie migracją i nie rotacją. ## Koncept podejścia Pierwszy przebieg ma być **metadata-only**: - czytamy foldery/ścieżki, - czytamy nazwy sekretów, - czytamy envy, - czytamy machine identities, project memberships, role i additional privileges, - klasyfikujemy po nazwie/ścieżce, np. `pat`, `ssh-key`, `provider-key`, `api-token`, `db-password`, `app-config`, `break-glass`, `legacy`, `unknown`, - każdy wynik klasyfikacji ma confidence `high|medium|low`, - `unknown` zostaje `unknown`, bez zgadywania wartości. Twardo poza zakresem pierwszego przebiegu: - brak `secretValue`, - brak kopiowania sekretów, - brak rename, - brak delete, - brak rotacji, - brak zmiany scope’ów machine identity, - brak drukowania auth headerów, bearerów, PAT-ów, private key markerów lub DSN z hasłami. ## Docelowy output Proponowany kształt z poprzedniego wątku: - `platformctl secrets infisical inventory --metadata-only --format json|markdown` - `state/infisical/reports/latest-inventory.json` - `state/infisical/reports/latest-inventory.md` - `docs/infisical/key-map.md` - `docs/infisical/target-structure.md` - `docs/infisical/migration-candidates.md` Raport JSON/Markdown powinien mieć co najmniej: - `complete: true|false`, - counts: paths, secret names, classes, migration candidates, - warnings bez wartości sekretów, - identity/membership/privilege summary, - root-level secrets oznaczone jako `needs-move`, - kandydatów migracji tylko jeśli inventory jest kompletne. ## Docelowa struktura Infisical Zachować istniejące dobre rodziny: - `/home-platform/providers` - `/home-platform/forgejo_accounts` - `/home-platform/infra` - `/home-platform/apps/<app>` - `/home-platform/agent_access/<type>/<domain>/<actor-or-purpose>` - `/home-platform/safe-session` - `/home-platform/backups` - `/home-platform/matrix_accounts` - `/home-platform/deprecated/<yyyy-mm-dd>/<source>` Root-level sekrety pod `/home-platform` traktować jako `needs-move`, ale nie przenosić automatycznie. ## Dual-path migration prep, nie migracja Audyt może przygotować kandydatów migracji, ale nie może ich wykonać. Dla każdego kandydata powinien powstać rekord: - `source_path/key`, - `target_path/key`, - owner/system, - consumers jeśli znane, - risk, - `copy_allowed: false`, - wymagany gate, - cutover/rollback. Kopiowanie wartości do nowych ścieżek powinno być osobnym krokiem z frazą typu: ```text infisical-dual-path-copy-approved ``` Stare ścieżki pozostają aktywne do czasu smoke consumerów i osobnego cleanup gate. Sama obecność frazy w repo nie jest zgodą operacyjną; tooling musi wiązać zgodę z live kontekstem operatora i konkretnymi kandydatami. ## Wnioski z Oracle review z poprzedniego wątku Oracle ocenił pierwotną implementację jako **NO-GO as-is** dla merge, ale z dobrym kierunkiem. Wskazane poprawki, które powinny wejść do finalnej wersji: - używać poprawnych parametrów Infisical API: `includeImports=false`, `recursive=false`, `includePersonalOverrides=false`, `expandSecretReferences=false`, `viewSecretValue=false`, - walidować `secretPath` zwracany przez API; jeśli różni się od żądanej ścieżki, drop/warning, - przy jakichkolwiek 401/403/404/warnings ustawiać `complete=false`, nie generować kandydatów migracji i kończyć kodem `8`/unknown state, - additional privileges pobierać szczegółowo per ID, jeśli list endpoint nie zawiera pełnych permissions, - output JSON i Markdown przepuszczać przez redaction guard, - nie drukować surowych błędów API w CLI, tylko bezpieczne komunikaty, - traktować nazwy kluczy i segmenty ścieżek jako potencjalnie wrażliwą metadane; wykrywać i redagować token-like names, - uwzględniać `targetPathPresent` i `targetExists` dla kandydatów migracji, - Markdown powinien pokazywać membership/role/additional privilege summary, nie tylko nazwy identities. ## Ważna decyzja o modelach / review Nie wysyłać prywatnych diffów ani plików repo do cloudowego DeepSeek V4/Ollama cloud. Jeśli potrzebny drugi model: - wysyłać tylko pseudoanonimizowane metadane/dokumenty, nie pełny diff, - preferować lokalny model przy delikatnych materiałach, - przed cloud review przygotować osobny, krótki, bezsekretowy pakiet: cel, założenia, listę ryzyk, listę decyzji, bez nazw prywatnych sekretów i bez repo diffu. ## Acceptance criteria - [ ] Jest komenda read-only `platformctl secrets infisical inventory` albo równoważny skrypt. - [ ] Testy potwierdzają, że output nie zawiera `secretValue`, bearerów, PAT-like 40-hex, private key markerów ani DSN z hasłami. - [ ] Testy obejmują klasyfikator nazw/ścieżek. - [ ] Testy obejmują `secretPath` mismatch i partial inventory. - [ ] Live dry-run generuje raport JSON/Markdown bez wartości sekretów. - [ ] `docs/infisical/key-map.md` opisuje aktualną mapę i datę refreshu. - [ ] `docs/infisical/target-structure.md` opisuje docelową strukturę. - [ ] `docs/infisical/migration-candidates.md` opisuje kandydatów bez wykonywania migracji. - [ ] Żaden krok nie kopiuje, nie usuwa, nie rotuje i nie zmienia sekretów. ## Suggested labels / routing To issue powinno być traktowane jako security-sensitive i procesowe: - `class/security-sensitive` - `risk/process` - opcjonalnie `risk/exposure` - raczej M03 / Secrets and access hardening albo M10 Improvements, zależnie od aktualnego sprintu. ## Trace - Source: Codex thread, Infisical inventory + dual-path migration planning, 2026-05-30/2026-06-07 - Relevant docs already in repo: `docs/infisical/key-map.md`, `docs/forgejo-agent-operations.md`, `docs/agents/agent-sos.md` - Important boundary: metadata-only first; migration later behind explicit gates. **Next:** przyszły agent powinien najpierw sprawdzić, czy obecne `docs/infisical/key-map.md` jest wystarczająco aktualne, a potem rozbić to issue na atomic task albo wdrożyć minimalny read-only inventory command.
Collaborator

Iskra judgment

Field Value
Target pdurlej/platform#issue#735
Priority p1
Action operator_needed
Scores reach 5 / impact 5 / confidence 5
Piotr fit high
Effort medium
Labels judge/p1, judge/operator-needed
Judge iskra via openclaw

Rationale: This is P1 operator-needed security inventory work because Infisical is a core trust dependency and needs a safe recurring metadata audit path.

Caveat: Audit metadata only unless explicitly gated; do not expose secret values, raw env, token material, or broaden admin access beyond the approved read scope.

Structured openclaw.judge.v0 payload
<!-- openclaw.judge.v0 -->
{
  "confidence": 5,
  "effort_hint": "medium",
  "escalation": {
    "kind": "operator",
    "reason": "Infisical inventory requires owner-approved admin-read scope, redaction rules, and recurring audit cadence because it touches the system secret backbone."
  },
  "evidence_refs": [
    {
      "note": "Issue asks for an Infisical metadata inventory and migration map because system security depends on Infisical working correctly.",
      "type": "forgejo",
      "value": "issue-title-body-labels-and-target-snapshot"
    },
    {
      "note": "Body says the first audit is needed now and the process should become regular rather than one-off.",
      "type": "forgejo",
      "value": "issue-body-recurring-audit-need"
    },
    {
      "note": "Current labels mark the issue as security-sensitive infra/docs work with exposure and process risk.",
      "type": "snapshot",
      "value": "target-snapshot-labels"
    }
  ],
  "impact": 5,
  "judge_actor": {
    "name": "iskra",
    "runtime": "openclaw"
  },
  "judged_at": "2026-06-14T01:02:00Z",
  "labels_to_apply": [
    "judge/p1",
    "judge/operator-needed"
  ],
  "piotr_fit": "high",
  "priority": "p1",
  "rationale_summary": "This is P1 operator-needed security inventory work because Infisical is a core trust dependency and needs a safe recurring metadata audit path.",
  "reach": 5,
  "recommended_next_action": "operator_needed",
  "rerun_reason": "no_prior_judgment",
  "schema": "openclaw.judge.v0",
  "target": {
    "kind": "issue",
    "number": 735,
    "repo": "pdurlej/platform"
  },
  "target_snapshot": {
    "body_hash": "sha256:47d427c088cc596104bf747e8341507fb5780a7753ff92e6474a041960f3f901",
    "commit_count": null,
    "evidence_hash": "sha256:9cd14199fcba17217efd2791dedabac67bdf41545410c53eb33e3a2163f4c4b3",
    "head_sha": null,
    "labels": [
      "class/security-sensitive",
      "domain:docs",
      "domain:infra",
      "kind/ops",
      "phase/03",
      "priority:p2",
      "risk/exposure",
      "risk/process"
    ],
    "labels_hash": "sha256:fedf3f1a5e8611e8c5a24cba248f06f64fe2a4f63a38da0b2b5ae13336a19160",
    "state": "open",
    "title_hash": "sha256:dfd41c7dcbb13dede09121c6e2e32db74aaf6f92502c3d58f67cbcc5ec67d68c",
    "updated_at": "2026-06-08T23:09:24+02:00"
  },
  "top_caveat": "Audit metadata only unless explicitly gated; do not expose secret values, raw env, token material, or broaden admin access beyond the approved read scope."
}
<!-- /openclaw.judge.v0 -->
### Iskra judgment | Field | Value | | --- | --- | | Target | `pdurlej/platform#issue#735` | | Priority | p1 | | Action | operator_needed | | Scores | reach 5 / impact 5 / confidence 5 | | Piotr fit | high | | Effort | medium | | Labels | `judge/p1`, `judge/operator-needed` | | Judge | `iskra` via `openclaw` | **Rationale:** This is P1 operator-needed security inventory work because Infisical is a core trust dependency and needs a safe recurring metadata audit path. **Caveat:** Audit metadata only unless explicitly gated; do not expose secret values, raw env, token material, or broaden admin access beyond the approved read scope. <details> <summary>Structured openclaw.judge.v0 payload</summary> ```json <!-- openclaw.judge.v0 --> { "confidence": 5, "effort_hint": "medium", "escalation": { "kind": "operator", "reason": "Infisical inventory requires owner-approved admin-read scope, redaction rules, and recurring audit cadence because it touches the system secret backbone." }, "evidence_refs": [ { "note": "Issue asks for an Infisical metadata inventory and migration map because system security depends on Infisical working correctly.", "type": "forgejo", "value": "issue-title-body-labels-and-target-snapshot" }, { "note": "Body says the first audit is needed now and the process should become regular rather than one-off.", "type": "forgejo", "value": "issue-body-recurring-audit-need" }, { "note": "Current labels mark the issue as security-sensitive infra/docs work with exposure and process risk.", "type": "snapshot", "value": "target-snapshot-labels" } ], "impact": 5, "judge_actor": { "name": "iskra", "runtime": "openclaw" }, "judged_at": "2026-06-14T01:02:00Z", "labels_to_apply": [ "judge/p1", "judge/operator-needed" ], "piotr_fit": "high", "priority": "p1", "rationale_summary": "This is P1 operator-needed security inventory work because Infisical is a core trust dependency and needs a safe recurring metadata audit path.", "reach": 5, "recommended_next_action": "operator_needed", "rerun_reason": "no_prior_judgment", "schema": "openclaw.judge.v0", "target": { "kind": "issue", "number": 735, "repo": "pdurlej/platform" }, "target_snapshot": { "body_hash": "sha256:47d427c088cc596104bf747e8341507fb5780a7753ff92e6474a041960f3f901", "commit_count": null, "evidence_hash": "sha256:9cd14199fcba17217efd2791dedabac67bdf41545410c53eb33e3a2163f4c4b3", "head_sha": null, "labels": [ "class/security-sensitive", "domain:docs", "domain:infra", "kind/ops", "phase/03", "priority:p2", "risk/exposure", "risk/process" ], "labels_hash": "sha256:fedf3f1a5e8611e8c5a24cba248f06f64fe2a4f63a38da0b2b5ae13336a19160", "state": "open", "title_hash": "sha256:dfd41c7dcbb13dede09121c6e2e32db74aaf6f92502c3d58f67cbcc5ec67d68c", "updated_at": "2026-06-08T23:09:24+02:00" }, "top_caveat": "Audit metadata only unless explicitly gated; do not expose secret values, raw env, token material, or broaden admin access beyond the approved read scope." } <!-- /openclaw.judge.v0 --> ``` </details>
Sign in to join this conversation.
No labels
W6d-automerge-calibration
agent/claude-code
agent/codex
agent/hermes
agent/iskra
agent/ollama
agent/patchwarden
automerge-candidate
class/security-sensitive
cutover-gate
dependency/blocked
dependency/blocks-others
dependency/cross-repo
dependency/needs-confirmation
domain:agents
domain:ci
domain:docs
domain:forgejo
domain:infra
domain:memory
domain:runtime
domain:signal
domain:ux
flow/architecture
flow/blocked
flow/deployed
flow/done
flow/implementation
flow/intake
flow/maintained
flow/observed
flow/ready
flow/refining
flow/retired
flow/review
iterating
judge/codex-candidate
judge/hermes-candidate
judge/low-confidence
judge/needs-refinement
judge/operator-needed
judge/p0
judge/p1
judge/p2
judge/p3
judge/park
judge/patchwarden-candidate
judge/stale-priority
kind/adr
kind/bug
kind/chore
kind/feature
kind/infra
kind/ops
kind/refactor
kind/research
large-impact
merge/auto
merge/manual
merge/manual-dependency-conflict
merge/manual-failing-tests
merge/manual-merge-conflict
merge/manual-missing-review
merge/manual-operator-preference
merge/manual-red-zone
merge/manual-security-sensitive
merge/manual-unclear-scope
merge/manual-unknown
meta
mode:operator-only
mode:patchwarden-iskra-approved
mode:safe-auto
needs-operator-decision
needs-triage
not-ready
observed/erroring
observed/needs-followup
observed/pending
observed/retire-candidate
observed/unused
observed/used
operator-emotional
owner-attention
phase/02
phase/03
priority:p0
priority:p1
priority:p2
priority:p3
proposed
ready-for-agent
ready-for-operator
recovery
review:claude-reviewed
review:codex-reviewed
review:dziadek-reviewed
review:needs-human
risk/exposure
risk/process
risk/product
risk/runtime
safety:external-write
safety:no-prod-mutation
safety:prod-impact
safety:secret-touch
size/large
size/medium
size/small
size/tiny
size/unknown
source/adr
source/agent-generated
source/manual
source/operator-chat
source/voice-note
status:blocked
status:codex-ready
status:merged:pending-evidence
status:needs-evidence
status:operator-needed
status:parked
tier/full
tier/lite
tier/stacked
tier:0-platform-substrate
tier:1-iskra-value-layer
tier:2-tools-products-modules
type:bug
type:chore
type:docs
type:feat
type:policy
type:research
No milestone
No project
No assignees
3 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
pdurlej/platform#735
No description provided.