{"ok":true,"agent_id":8220,"events":[{"event_id":475832,"entity":{"kind":"source_link","id":1625,"agent_id":8220,"name":"PortalJS – AI-native, open-source framework for data portals","url":"https://github.com/datopian/portaljs"},"event_type":"cooling","metric_key":"npm_downloads_7d","detected_at":"2026-10-27T12:00:00.000Z","effective_at":"2026-10-27T02:09:11.059Z","window_days":3,"baseline":35,"current_value":22,"delta":-24,"velocity":-8,"acceleration":-19.666666666666668,"confidence":0.85,"why":"npm_downloads_7d momentum fell to -24 per 3d from 35 (<= 40% of the prior window)","reason":"npm_downloads_7d momentum fell to -24 per 3d from 35 (<= 40% of the prior window)","explanation_source":"detector","state_before":"gain_3d=35","state_after":"gain_3d=-24","source_diversity":3,"evidence":[{"sourceUrl":"https://www.npmjs.com/package/create-portaljs","observedAt":1793066951059,"note":"observation series"}],"detector_version":"signal-v1","status":"active"},{"event_id":473662,"entity":{"kind":"source_link","id":1625,"agent_id":8220,"name":"PortalJS – AI-native, open-source framework for data portals","url":"https://github.com/datopian/portaljs"},"event_type":"accelerating","metric_key":"npm_downloads_7d","detected_at":"2026-10-26T12:00:00.000Z","effective_at":"2026-10-26T01:45:59.471Z","window_days":3,"baseline":0,"current_value":46,"delta":35,"velocity":11.666666666666666,"acceleration":11.666666666666666,"confidence":0.75,"why":"npm_downloads_7d gained 35 in the last 3d after a flat 3d baseline (no prior movement to compare a ratio against)","reason":"npm_downloads_7d gained 35 in the last 3d after a flat 3d baseline (no prior movement to compare a ratio against)","explanation_source":"detector","state_before":"gain_3d=0","state_after":"gain_3d=35","source_diversity":3,"evidence":[{"sourceUrl":"https://www.npmjs.com/package/create-portaljs","observedAt":1792979159471,"note":"observation series"}],"detector_version":"signal-v1","status":"active"},{"event_id":471617,"entity":{"kind":"source_link","id":1625,"agent_id":8220,"name":"PortalJS – AI-native, open-source framework for data portals","url":"https://github.com/datopian/portaljs"},"event_type":"accelerating","metric_key":"npm_downloads_7d","detected_at":"2026-10-25T12:00:00.000Z","effective_at":"2026-10-25T01:23:46.943Z","window_days":3,"baseline":7,"current_value":46,"delta":35,"velocity":11.666666666666666,"acceleration":9.333333333333334,"confidence":0.9,"why":"npm_downloads_7d gained 35 in the last 3d vs 7 in the 3d before (ratio 5.0x, threshold 1.5x)","reason":"npm_downloads_7d gained 35 in the last 3d vs 7 in the 3d before (ratio 5.0x, threshold 1.5x)","explanation_source":"detector","state_before":"gain_3d=7","state_after":"gain_3d=35","source_diversity":3,"evidence":[{"sourceUrl":"https://www.npmjs.com/package/create-portaljs","observedAt":1792891426943,"note":"observation series"}],"detector_version":"signal-v1","status":"active"},{"event_id":469935,"entity":{"kind":"source_link","id":1625,"agent_id":8220,"name":"PortalJS – AI-native, open-source framework for data portals","url":"https://github.com/datopian/portaljs"},"event_type":"accelerating","metric_key":"npm_downloads_7d","detected_at":"2026-10-24T12:00:00.000Z","effective_at":"2026-10-24T05:03:51.177Z","window_days":3,"baseline":7,"current_value":46,"delta":35,"velocity":11.666666666666666,"acceleration":9.333333333333334,"confidence":0.9,"why":"npm_downloads_7d gained 35 in the last 3d vs 7 in the 3d before (ratio 5.0x, threshold 1.5x)","reason":"npm_downloads_7d gained 35 in the last 3d vs 7 in the 3d before (ratio 5.0x, threshold 1.5x)","explanation_source":"detector","state_before":"gain_3d=7","state_after":"gain_3d=35","source_diversity":3,"evidence":[{"sourceUrl":"https://www.npmjs.com/package/create-portaljs","observedAt":1792818231177,"note":"observation series"}],"detector_version":"signal-v1","status":"active"},{"event_id":466169,"entity":{"kind":"source_link","id":1625,"agent_id":8220,"name":"PortalJS – AI-native, open-source framework for data portals","url":"https://github.com/datopian/portaljs"},"event_type":"reactivated","metric_key":"npm_downloads_7d","detected_at":"2026-10-22T12:00:00.000Z","effective_at":"2026-10-22T00:13:15.028Z","window_days":10,"baseline":0,"current_value":11,"delta":7,"velocity":2.3333333333333335,"acceleration":null,"confidence":0.8,"why":"npm_downloads_7d did not move for 7d, then gained 7 in the last 3d","reason":"npm_downloads_7d did not move for 7d, then gained 7 in the last 3d","explanation_source":"detector","state_before":"dormant","state_after":"active","source_diversity":3,"evidence":[{"sourceUrl":"https://www.npmjs.com/package/create-portaljs","observedAt":1792627995028,"note":"observation series"}],"detector_version":"signal-v1","status":"active"},{"event_id":464009,"entity":{"kind":"source_link","id":1625,"agent_id":8220,"name":"PortalJS – AI-native, open-source framework for data portals","url":"https://github.com/datopian/portaljs"},"event_type":"reactivated","metric_key":"npm_downloads_7d","detected_at":"2026-10-21T12:00:00.000Z","effective_at":"2026-10-21T00:50:38.746Z","window_days":10,"baseline":0,"current_value":11,"delta":7,"velocity":2.3333333333333335,"acceleration":null,"confidence":0.8,"why":"npm_downloads_7d did not move for 7d, then gained 7 in the last 3d","reason":"npm_downloads_7d did not move for 7d, then gained 7 in the last 3d","explanation_source":"detector","state_before":"dormant","state_after":"active","source_diversity":3,"evidence":[{"sourceUrl":"https://www.npmjs.com/package/create-portaljs","observedAt":1792543838746,"note":"observation series"}],"detector_version":"signal-v1","status":"active"},{"event_id":456792,"entity":{"kind":"source_link","id":1625,"agent_id":8220,"name":"PortalJS – AI-native, open-source framework for data portals","url":"https://github.com/datopian/portaljs"},"event_type":"accelerating","metric_key":"npm_downloads_7d","detected_at":"2026-10-20T12:00:00.000Z","effective_at":"2026-10-20T00:27:31.138Z","window_days":3,"baseline":0,"current_value":11,"delta":5,"velocity":1.6666666666666667,"acceleration":1.6666666666666667,"confidence":0.75,"why":"npm_downloads_7d gained 5 in the last 3d after a flat 3d baseline (no prior movement to compare a ratio against)","reason":"npm_downloads_7d gained 5 in the last 3d after a flat 3d baseline (no prior movement to compare a ratio against)","explanation_source":"detector","state_before":"gain_3d=0","state_after":"gain_3d=5","source_diversity":3,"evidence":[{"sourceUrl":"https://www.npmjs.com/package/create-portaljs","observedAt":1792456051138,"note":"observation series"}],"detector_version":"signal-v1","status":"active"},{"event_id":455151,"entity":{"kind":"source_link","id":1625,"agent_id":8220,"name":"PortalJS – AI-native, open-source framework for data portals","url":"https://github.com/datopian/portaljs"},"event_type":"accelerating","metric_key":"npm_downloads_7d","detected_at":"2026-10-19T12:00:00.000Z","effective_at":"2026-10-19T19:22:55.947Z","window_days":3,"baseline":0,"current_value":11,"delta":5,"velocity":1.6666666666666667,"acceleration":1.6666666666666667,"confidence":0.75,"why":"npm_downloads_7d gained 5 in the last 3d after a flat 3d baseline (no prior movement to compare a ratio against)","reason":"npm_downloads_7d gained 5 in the last 3d after a flat 3d baseline (no prior movement to compare a ratio against)","explanation_source":"detector","state_before":"gain_3d=0","state_after":"gain_3d=5","source_diversity":3,"evidence":[{"sourceUrl":"https://www.npmjs.com/package/create-portaljs","observedAt":1792437775947,"note":"observation series"}],"detector_version":"signal-v1","status":"active"},{"event_id":330251,"entity":{"kind":"source_link","id":1625,"agent_id":8220,"name":"PortalJS – AI-native, open-source framework for data portals","url":"https://github.com/datopian/portaljs"},"event_type":"accelerating","metric_key":"npm_downloads_7d","detected_at":"2026-10-03T12:00:00.000Z","effective_at":"2026-10-03T00:50:00.223Z","window_days":3,"baseline":0,"current_value":9,"delta":6,"velocity":2,"acceleration":2,"confidence":0.75,"why":"npm_downloads_7d gained 6 in the last 3d after a flat 3d baseline (no prior movement to compare a ratio against)","reason":"npm_downloads_7d gained 6 in the last 3d after a flat 3d baseline (no prior movement to compare a ratio against)","explanation_source":"detector","state_before":"gain_3d=0","state_after":"gain_3d=6","source_diversity":3,"evidence":[{"sourceUrl":"https://www.npmjs.com/package/create-portaljs","observedAt":1790988600223,"note":"observation series"}],"detector_version":"signal-v1","status":"active"},{"event_id":321239,"entity":{"kind":"source_link","id":1625,"agent_id":8220,"name":"PortalJS – AI-native, open-source framework for data portals","url":"https://github.com/datopian/portaljs"},"event_type":"accelerating","metric_key":"npm_downloads_7d","detected_at":"2026-10-02T12:00:00.000Z","effective_at":"2026-10-02T00:18:19.936Z","window_days":3,"baseline":2,"current_value":10,"delta":7,"velocity":2.3333333333333335,"acceleration":1.6666666666666667,"confidence":0.9,"why":"npm_downloads_7d gained 7 in the last 3d vs 2 in the 3d before (ratio 3.5x, threshold 1.5x)","reason":"npm_downloads_7d gained 7 in the last 3d vs 2 in the 3d before (ratio 3.5x, threshold 1.5x)","explanation_source":"detector","state_before":"gain_3d=2","state_after":"gain_3d=7","source_diversity":3,"evidence":[{"sourceUrl":"https://www.npmjs.com/package/create-portaljs","observedAt":1790900299936,"note":"observation series"}],"detector_version":"signal-v1","status":"active"},{"event_id":313677,"entity":{"kind":"source_link","id":1625,"agent_id":8220,"name":"PortalJS – AI-native, open-source framework for data portals","url":"https://github.com/datopian/portaljs"},"event_type":"accelerating","metric_key":"npm_downloads_7d","detected_at":"2026-10-01T12:00:00.000Z","effective_at":"2026-10-01T03:57:28.554Z","window_days":3,"baseline":3,"current_value":10,"delta":7,"velocity":2.3333333333333335,"acceleration":1.3333333333333333,"confidence":0.9,"why":"npm_downloads_7d gained 7 in the last 3d vs 3 in the 3d before (ratio 2.3x, threshold 1.5x)","reason":"npm_downloads_7d gained 7 in the last 3d vs 3 in the 3d before (ratio 2.3x, threshold 1.5x)","explanation_source":"detector","state_before":"gain_3d=3","state_after":"gain_3d=7","source_diversity":3,"evidence":[{"sourceUrl":"https://www.npmjs.com/package/create-portaljs","observedAt":1790827048554,"note":"observation series"}],"detector_version":"signal-v1","status":"active"},{"event_id":165203,"entity":{"kind":"source_link","id":1625,"agent_id":8220,"name":"PortalJS – AI-native, open-source framework for data portals","url":"https://github.com/datopian/portaljs"},"event_type":"reactivated","metric_key":"npm_downloads_7d","detected_at":"2026-09-13T12:00:00.000Z","effective_at":"2026-09-13T00:12:02.065Z","window_days":10,"baseline":0,"current_value":11,"delta":4,"velocity":1.3333333333333333,"acceleration":null,"confidence":0.8,"why":"npm_downloads_7d did not move for 7d, then gained 4 in the last 3d","reason":"npm_downloads_7d did not move for 7d, then gained 4 in the last 3d","explanation_source":"detector","state_before":"dormant","state_after":"active","source_diversity":3,"evidence":[{"sourceUrl":"https://www.npmjs.com/package/create-portaljs","observedAt":1789258322065,"note":"observation series"}],"detector_version":"signal-v1","status":"active"},{"event_id":160776,"entity":{"kind":"source_link","id":1625,"agent_id":8220,"name":"PortalJS – AI-native, open-source framework for data portals","url":"https://github.com/datopian/portaljs"},"event_type":"reactivated","metric_key":"npm_downloads_7d","detected_at":"2026-09-12T12:00:00.000Z","effective_at":"2026-09-12T13:02:12.148Z","window_days":10,"baseline":0,"current_value":11,"delta":4,"velocity":1.3333333333333333,"acceleration":null,"confidence":0.8,"why":"npm_downloads_7d did not move for 7d, then gained 4 in the last 3d","reason":"npm_downloads_7d did not move for 7d, then gained 4 in the last 3d","explanation_source":"detector","state_before":"dormant","state_after":"active","source_diversity":3,"evidence":[{"sourceUrl":"https://www.npmjs.com/package/create-portaljs","observedAt":1789218132148,"note":"observation series"}],"detector_version":"signal-v1","status":"active"}],"series":[{"metric_key":"github_stars","points":2,"first":1790018905163,"last":1792434288862},{"metric_key":"hn_points","points":3,"first":1787436224820,"last":1792544626192},{"metric_key":"npm_downloads_7d","points":19,"first":1788272395690,"last":1793044233304}],"note":"observation series are step functions: a missing day means unchanged, not unobserved"}