{"data":{"skill":{"slug":"addyosmani-observability-and-instrumentation","name":"observability-and-instrumentation","icon":"📦","repo":"https://github.com/addyosmani/agent-skills/tree/be4e44a9fbc5e8df0beaefadbb28bd22ee61cc39/skills/observability-and-instrumentation","status":"approved","author":"addyosmani","authorVersion":null,"skillstoreRevision":1},"audit":{"id":"b5684ef2-87d6-47c4-960a-c0f6e71c328e","skill_id":"9b2dc625-5e58-41cc-9706-805f6bb00744","version":1,"content_hash":"v3:5526951beaeca22519572a471618555839b53b05:e7fcb0820306d46268de9594d676ad98e35040858926c412b7000faa52a61f87:85a1e429f7018823811075904897827a909043e0c1f45827170e69900865ef52:736b696c6c732f616464796f736d616e692f6f62736572766162696c6974792d616e642d696e737472756d656e746174696f6e:6e448e2e0b9ecbfe8533d8890ba03b5a","risk_level":"safe","is_blocked":false,"safe_to_publish":true,"analysis_status":"ok","agent_auto_install_policy":"allowed","manual_install_policy":"allowed","summary":"All 41 static findings are false positives caused by Markdown formatting or benign documentation examples. The skill contains no executable scripts, secret collection, path traversal behavior, system reconnaissance, prompt injection, or malicious intent.","remediation":[],"risk_factor_evidence":[{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":21,"line_start":21},{"file":"SKILL.md","line_end":22,"line_start":22},{"file":"SKILL.md","line_end":23,"line_start":23},{"file":"SKILL.md","line_end":38,"line_start":31},{"file":"SKILL.md","line_end":46,"line_start":38},{"file":"SKILL.md","line_end":56,"line_start":46},{"file":"SKILL.md","line_end":58,"line_start":56},{"file":"SKILL.md","line_end":68,"line_start":58},{"file":"SKILL.md","line_end":74,"line_start":68},{"file":"SKILL.md","line_end":75,"line_start":74},{"file":"SKILL.md","line_end":76,"line_start":75},{"file":"SKILL.md","line_end":77,"line_start":76},{"file":"SKILL.md","line_end":81,"line_start":77},{"file":"SKILL.md","line_end":89,"line_start":81},{"file":"SKILL.md","line_end":93,"line_start":89},{"file":"SKILL.md","line_end":95,"line_start":93},{"file":"SKILL.md","line_end":95,"line_start":95},{"file":"SKILL.md","line_end":106,"line_start":102},{"file":"SKILL.md","line_end":112,"line_start":106},{"file":"SKILL.md","line_end":114,"line_start":112},{"file":"SKILL.md","line_end":123,"line_start":114},{"file":"SKILL.md","line_end":127,"line_start":123},{"file":"SKILL.md","line_end":130,"line_start":127},{"file":"SKILL.md","line_end":138,"line_start":130},{"file":"SKILL.md","line_end":148,"line_start":138},{"file":"SKILL.md","line_end":150,"line_start":148},{"file":"SKILL.md","line_end":150,"line_start":150},{"file":"SKILL.md","line_end":161,"line_start":156},{"file":"SKILL.md","line_end":174,"line_start":161},{"file":"SKILL.md","line_end":178,"line_start":174},{"file":"SKILL.md","line_end":181,"line_start":178},{"file":"SKILL.md","line_end":184,"line_start":181},{"file":"SKILL.md","line_end":194,"line_start":184},{"file":"SKILL.md","line_end":194,"line_start":194}]},{"factor":"filesystem","evidence":[{"file":"SKILL.md","line_end":238,"line_start":238}]},{"factor":"env_access","evidence":[{"file":"SKILL.md","line_end":101,"line_start":101},{"file":"SKILL.md","line_end":101,"line_start":101}]}],"critical_findings":[],"high_findings":[],"medium_findings":[],"low_findings":[],"dangerous_patterns":[],"files_scanned":1,"total_lines":239,"audit_model":"codex","audited_at":"2026-09-12T11:54:28.809+00:00","created_at":"2026-09-14T00:39:24.750504+00:00","static_findings":[{"id":"external_commands:SKILL.md:21:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Diagnosing a failure happening right now — use the `debugging-and-error-recovery` skill (observabi","category":"external_commands","line_end":21,"severity":"medium","line_start":21},{"id":"external_commands:SKILL.md:22:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Profiling and optimizing measured slowness — use the `performance-optimization` skill","category":"external_commands","line_end":22,"severity":"medium","line_start":22},{"id":"external_commands:SKILL.md:23:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Launch-day monitoring checklists and rollback triggers — see the `shipping-and-launch` skill; this","category":"external_commands","line_end":23,"severity":"medium","line_start":23},{"id":"external_commands:SKILL.md:31:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":38,"severity":"medium","line_start":31},{"id":"external_commands:SKILL.md:38:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":46,"severity":"medium","line_start":38},{"id":"external_commands:SKILL.md:46:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| **Structured log** | \"What happened in this specific case?\" | Per-event; grows with traffic | `pay","category":"external_commands","line_end":56,"severity":"medium","line_start":46},{"id":"external_commands:SKILL.md:56:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":58,"severity":"medium","line_start":56},{"id":"external_commands:SKILL.md:58:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"logger.info(`Payment ${id} failed for user ${userId} after ${n} retries`);","category":"external_commands","line_end":68,"severity":"medium","line_start":58},{"id":"external_commands:SKILL.md:68:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":74,"severity":"medium","line_start":68},{"id":"external_commands:SKILL.md:74:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `error` | Invariant broken; someone may need to act | Investigate |","category":"external_commands","line_end":75,"severity":"medium","line_start":74},{"id":"external_commands:SKILL.md:75:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `warn` | Degraded but handled (retry succeeded, fallback used) | Watch for trends |","category":"external_commands","line_end":76,"severity":"medium","line_start":75},{"id":"external_commands:SKILL.md:76:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `info` | Significant business event (order placed, job finished) | None |","category":"external_commands","line_end":77,"severity":"medium","line_start":76},{"id":"external_commands:SKILL.md:77:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `debug` | Diagnostic detail | Off in production by default |","category":"external_commands","line_end":81,"severity":"medium","line_start":77},{"id":"external_commands:SKILL.md:81:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":89,"severity":"medium","line_start":81},{"id":"external_commands:SKILL.md:89:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":93,"severity":"medium","line_start":89},{"id":"external_commands:SKILL.md:93:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":95,"severity":"medium","line_start":93},{"id":"external_commands:SKILL.md:95:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"// `entryPoint`, not `source` — ECS reserves `source.*` for network fields.","category":"external_commands","line_end":95,"severity":"medium","line_start":95},{"id":"external_commands:SKILL.md:102:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":106,"severity":"medium","line_start":102},{"id":"external_commands:SKILL.md:106:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"**Never log secrets, tokens, passwords, or full PII.** This is a hard rule from the `security-and-ha","category":"external_commands","line_end":112,"severity":"medium","line_start":106},{"id":"external_commands:SKILL.md:112:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"As with tracing, the vendor-neutral path is the OpenTelemetry metrics API (same SDK and context as s","category":"external_commands","line_end":114,"severity":"medium","line_start":112},{"id":"external_commands:SKILL.md:114:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":123,"severity":"medium","line_start":114},{"id":"external_commands:SKILL.md:123:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":127,"severity":"medium","line_start":123},{"id":"external_commands:SKILL.md:127:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":130,"severity":"medium","line_start":127},{"id":"external_commands:SKILL.md:130:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":138,"severity":"medium","line_start":130},{"id":"external_commands:SKILL.md:138:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":148,"severity":"medium","line_start":138},{"id":"external_commands:SKILL.md:148:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":150,"severity":"medium","line_start":148},{"id":"external_commands:SKILL.md:150:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Add manual spans only around meaningful internal units of work (e.g., `applyDiscounts`, `chargeProvi","category":"external_commands","line_end":150,"severity":"medium","line_start":150},{"id":"external_commands:SKILL.md:156:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":161,"severity":"medium","line_start":156},{"id":"external_commands:SKILL.md:161:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":174,"severity":"medium","line_start":161},{"id":"external_commands:SKILL.md:174:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Rule 2 above requires every alert to link to a runbook. A runbook's job is to answer three questions","category":"external_commands","line_end":178,"severity":"medium","line_start":174},{"id":"external_commands:SKILL.md:178:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```markdown","category":"external_commands","line_end":181,"severity":"medium","line_start":178},{"id":"external_commands:SKILL.md:181:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"**First check:** `SELECT count(*) FROM pg_stat_activity WHERE backend_type = 'client backend';`","category":"external_commands","line_end":184,"severity":"medium","line_start":181},{"id":"external_commands:SKILL.md:184:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":194,"severity":"medium","line_start":184},{"id":"external_commands:SKILL.md:194:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Force an error in staging → find it in the logs by `requestId`, confirm fields are structured (not","category":"external_commands","line_end":194,"severity":"medium","line_start":194},{"id":"filesystem:SKILL.md:238:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"For the at-a-glance version of this list, including the pre-launch instrumentation gate, see `../../","category":"filesystem","line_end":238,"severity":"high","line_start":238},{"id":"env_access:SKILL.md:101:environment-variable-access-dot-notation","file":"SKILL.md","pattern":"Environment variable access (dot notation)","snippet":"// CLI invocation        -> runLog('cli', process.env.RUN_ID ?? crypto.randomUUID())","category":"env_access","line_end":101,"severity":"low","line_start":101},{"id":"env_access:SKILL.md:101:environment-variable-object","file":"SKILL.md","pattern":"Environment variable object","snippet":"// CLI invocation        -> runLog('cli', process.env.RUN_ID ?? crypto.randomUUID())","category":"env_access","line_end":101,"severity":"low","line_start":101},{"id":"sensitive:SKILL.md:101:environment-file-access","file":"SKILL.md","pattern":"Environment file access","snippet":"// CLI invocation        -> runLog('cli', process.env.RUN_ID ?? crypto.randomUUID())","category":"sensitive","line_end":101,"severity":"high","line_start":101},{"id":"blocker:SKILL.md:48:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"| **Trace** | \"Where did time go across services?\" | Per-request; usually sampled | One slow checkou","category":"blocker","line_end":48,"severity":"low","line_start":48},{"id":"blocker:SKILL.md:84:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"req.id = req.headers['x-request-id'] ?? crypto.randomUUID();","category":"blocker","line_end":84,"severity":"low","line_start":84},{"id":"blocker:SKILL.md:85:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"req.log = logger.child({ requestId: req.id });","category":"blocker","line_end":85,"severity":"low","line_start":85}],"finding_verdicts":[{"id":"external_commands:SKILL.md:21:ruby-shell-backtick-execution","reason":"The backticks format a related skill name in Markdown; they do not invoke a shell or Ruby runtime.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:22:ruby-shell-backtick-execution","reason":"The backticks format a related skill name in Markdown; no command is executed.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:23:ruby-shell-backtick-execution","reason":"The backticks identify another documentation skill and have no execution semantics.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:31:ruby-shell-backtick-execution","reason":"This is the opening of a fenced plain-text example describing observability questions, not shell syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:38:ruby-shell-backtick-execution","reason":"This is a Markdown code-fence delimiter with no executable content.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:46:ruby-shell-backtick-execution","reason":"The backticks format an example log event name inside a Markdown table.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:56:ruby-shell-backtick-execution","reason":"This opens a fenced TypeScript example and does not execute an external command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:58:ruby-shell-backtick-execution","reason":"The JavaScript template literal builds a log message in an explicitly discouraged example; it is not shell command substitution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:68:ruby-shell-backtick-execution","reason":"This closes a fenced TypeScript example and has no execution semantics.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:74:ruby-shell-backtick-execution","reason":"The backticks format the logging level name in a Markdown table.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:75:ruby-shell-backtick-execution","reason":"The backticks format the logging level name in a Markdown table.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:76:ruby-shell-backtick-execution","reason":"The backticks format the logging level name in a Markdown table.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:77:ruby-shell-backtick-execution","reason":"The backticks format the logging level name in a Markdown table.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:81:ruby-shell-backtick-execution","reason":"This opens a fenced TypeScript middleware example and does not execute a command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:89:ruby-shell-backtick-execution","reason":"This closes a fenced TypeScript example and has no execution semantics.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:93:ruby-shell-backtick-execution","reason":"This opens a fenced TypeScript logging example and does not invoke a shell.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:95:ruby-shell-backtick-execution","reason":"The backticks format identifier names inside a TypeScript comment.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:102:ruby-shell-backtick-execution","reason":"This closes a fenced TypeScript example and has no execution semantics.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:106:ruby-shell-backtick-execution","reason":"The backticks format a related security skill name while the prose explicitly prohibits logging secrets.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:112:ruby-shell-backtick-execution","reason":"The backticks format a package name in explanatory prose and do not execute it.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:114:ruby-shell-backtick-execution","reason":"This opens a fenced TypeScript metrics example and does not invoke an external command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:123:ruby-shell-backtick-execution","reason":"This closes a fenced TypeScript example and has no execution semantics.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:127:ruby-shell-backtick-execution","reason":"This opens a fenced plain-text example of metric labels, not executable shell content.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:130:ruby-shell-backtick-execution","reason":"This closes a fenced plain-text example and has no execution semantics.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:138:ruby-shell-backtick-execution","reason":"This opens a fenced TypeScript OpenTelemetry example and does not invoke a command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:148:ruby-shell-backtick-execution","reason":"This closes a fenced TypeScript example and has no execution semantics.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:150:ruby-shell-backtick-execution","reason":"The backticks format example function names in prose; they do not execute those functions.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:156:ruby-shell-backtick-execution","reason":"This opens a fenced text comparison of alert symptoms and causes.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:161:ruby-shell-backtick-execution","reason":"This closes a fenced plain-text example and has no execution semantics.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:174:ruby-shell-backtick-execution","reason":"The backticks format a relative runbook directory in documentation.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:178:ruby-shell-backtick-execution","reason":"This opens a fenced Markdown runbook example and does not invoke a shell.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:181:ruby-shell-backtick-execution","reason":"The backticks display a read-only SQL diagnostic query in a runbook example; no database or shell execution occurs.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:184:ruby-shell-backtick-execution","reason":"This closes a fenced Markdown example and has no execution semantics.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:194:ruby-shell-backtick-execution","reason":"The backticks format expected log values in a staging verification instruction.","verdict":"false_positive","confidence":0.99},{"id":"filesystem:SKILL.md:238:path-traversal-sequence","reason":"The traversal sequence appears only in a Markdown link to a repository documentation file; it does not access the filesystem.","verdict":"false_positive","confidence":0.99},{"id":"env_access:SKILL.md:101:environment-variable-access-dot-notation","reason":"The TypeScript comment illustrates reading a non-secret run correlation identifier, with no execution or data transmission.","verdict":"false_positive","confidence":0.98},{"id":"env_access:SKILL.md:101:environment-variable-object","reason":"The environment object occurs only in a commented TypeScript usage example for an optional run identifier.","verdict":"false_positive","confidence":0.98},{"id":"sensitive:SKILL.md:101:environment-file-access","reason":"The source references process.env.RUN_ID, not an environment file, and neither reads nor exposes credentials.","verdict":"false_positive","confidence":0.99},{"id":"blocker:SKILL.md:48:system-reconnaissance","reason":"The line describes distributed trace timing conceptually and performs no system reconnaissance.","verdict":"false_positive","confidence":0.99},{"id":"blocker:SKILL.md:84:system-reconnaissance","reason":"The TypeScript example reads a request header or generates a UUID for correlation; it does not inspect the host system.","verdict":"false_positive","confidence":0.98},{"id":"blocker:SKILL.md:85:system-reconnaissance","reason":"The TypeScript example creates a child logger with a request identifier and performs no reconnaissance.","verdict":"false_positive","confidence":0.99}],"semantic_findings":[],"subject_marketplace_commit_sha":"5526951beaeca22519572a471618555839b53b05","subject_content_hash":"e7fcb0820306d46268de9594d676ad98e35040858926c412b7000faa52a61f87","subject_tree_hash":"85a1e429f7018823811075904897827a909043e0c1f45827170e69900865ef52","subject_plugin_path":"skills/addyosmani/observability-and-instrumentation","audit_payload_hash":"6e448e2e0b9ecbfe8533d8890ba03b5a","confirmed_risk_level":"safe","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"5526951beaeca22519572a471618555839b53b05","contentHash":"e7fcb0820306d46268de9594d676ad98e35040858926c412b7000faa52a61f87","treeHash":"85a1e429f7018823811075904897827a909043e0c1f45827170e69900865ef52","pluginPath":"skills/addyosmani/observability-and-instrumentation","auditPayloadHash":"6e448e2e0b9ecbfe8533d8890ba03b5a"},"scannerVersion":"3.0.0","policyVersion":"skillstore-security-audit-policy-v1"},"auditTranslation":null,"localization":{"requestedLocale":"en","contentLocale":"en","availableLocales":["en"],"fallbackToEnglish":false},"attestation":{"availability":"issued","url":"/api/skills/addyosmani-observability-and-instrumentation/audits/1/attestation","status":"active"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"safe","confirmedFindingCount":0,"capabilityReviewCount":0,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"allowed","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"active","verificationState":"not_verified"},"isLatest":true}}