Repository navigation
fix: make node observations understandable and measurable - #6445
Conversation
✅ Drift Bot (ClawMetry): no drift detectedDrift Bot analyzed the changed files against this project's blueprints and requirements and found no drift. |
Visual diffComparing 2 of 86 comparison(s) flagged (>1% pixel diff).
Folder: 40037e2d45c9. Full PNGs also attached as a workflow artefact. Generated by visual-diff bot. Pixel diffs >1% flagged; eyeball the table before merging. This check is non-blocking — fail = bot bug, not a code problem. |
✅ Drift Bot (ClawMetry): no drift detectedDrift Bot analyzed the changed files against this project's blueprints and requirements and found no drift. |
ddc3147 to
c2991e3
Compare
✅ Drift Bot (ClawMetry): no drift detectedDrift Bot analyzed the changed files against this project's blueprints and requirements and found no drift. |
1 similar comment
✅ Drift Bot (ClawMetry): no drift detectedDrift Bot analyzed the changed files against this project's blueprints and requirements and found no drift. |
Co-Authored-By: Codex <noreply@openai.com>
Co-Authored-By: Codex <noreply@openai.com>
Co-Authored-By: Codex <noreply@openai.com>
Co-Authored-By: Codex <noreply@openai.com>
bd1b384 to
40037e2
Compare
✅ Drift Bot (ClawMetry): no drift detectedDrift Bot analyzed the changed files against this project's blueprints and requirements and found no drift. |
The Node activity screen showed an unknown process total despite retaining 512 observations, no per-process CPU rates and an empty port list when macOS denied the primary API. Its actor-category diagram also did not explain the selected observation.
Show positive observed counts separately from exact totals, measure process CPU from comparable cumulative intervals, and collect permitted macOS TCP listeners with a fixed bounded lsof fallback. The selected view now explains what was seen, where and when, with evidenced attribution or a specific uncertainty explanation. Original before/after and source evidence stays under Technical details. Inventories explain their source and keep a direct coverage link, including when only stale retained rows remain.
The daemon remains the collector and DuckDB writer. No request-time host reads, elevated permissions, new dependencies, process controls or additional pollers are introduced. CPU 100% means one core; first or discontinuous samples remain unavailable. Fallback listeners are always partial, and malformed/interrupted/method-change observations cannot imply removals or ownership.
Validation: 96 focused collector/store/frontend/browser/wiring checks pass, including an actual owned process and loopback listener through the collector and in-memory DuckDB. New observed-count, malformed parser and CPU interval regressions were demonstrated red before correction. Independent frontend and collector reviews cover the complete buckets. A real-data Chrome preview confirmed the event story, positive counts, interval CPU, accessible ports and coverage reasons. The eleven exact Factory criteria are mirrored; all have test references and the prior 68 uncovered criteria remain unchanged (418/486 covered after rebasing onto Asimov main).
Factory requirements and design were written and read back before implementation:
CI wiring: the new collector regression module is explicitly included in the existing Node verification job; its exact command passes 95 checks locally and the CI test-file coverage ratchet remains at 902 pre-existing unlisted files.
Execution and review evidence:
.sw-factory/WO-NODE-CLARITY-001/. Official wheel inspection, local upgrade, cloud deployment and the actual installed owned-process/listener/CPU path in local and encrypted hosted views remain mandatory delivery gates under root ownership.🤖 Prepared by Codex under the repository’s Claude Code workflow.