mirror of
https://github.com/yogeshojha/rengine.git
synced 2026-10-21 07:41:28 +02:00
a5d835dfmade ip_enrichment catalog_hidden. That removed it from the builder entirely, which is worse: a stage that always runs and that every address surface reads should not be invisible. An operator has to know it exists. It is now `always_on` — served in the catalog with the flag, rendered as a row with an "Always on" badge and a checked, disabled switch. asset_seed keeps catalog_hidden: it is the focused-rescan mechanism and is meaningless in an authored engine. Neither flag is presentational. Hiding the control was never the mechanism, because the resolver still honoured a "no" from two other directions: a launch could send overrides {ip_enrichment: {enabled: false}} (verified: preview reported "Disabled in engine"), and an engine document saved before the stage was hidden kept disabling it. merge_engine_context now takes a hidden stage's defaults outright and forces enabled=True on an always_on one. validate_overrides and _validate_stages strip the key rather than reject, so a legacy document and an imported YAML both keep saving — rejecting is what broke the Full Sweep and Passive Recon presets in4600a4c8. preset_stages skips both, so even Blank cannot author a "no". asset_seed is unaffected by the force: ScanService enables it on resolved.stages after the merge. Also fixes the copy, which is what prompted this. The description read "Sweep up every address the scan found and complete what only the finished run can know" — the only one of twenty not written as a plain statement of what the stage produces. Five more in the same pass: vhost.enabled used jargon and contradicted its own stage description, endpoint_probe.skip_static said nothing concrete, dns_batch_concurrency carried a measurement anecdote in a tooltip, and three stages inherited the placeholder "Run this stage during a scan." which is the text YAML autocomplete shows for the toggle. Verified: catalog 18 -> 19 with always_on true; POST/PATCH/import of a document disabling it all save with the key stripped; preview reports will_run with the engine document and an override both saying no; a real scan launched with that override resolved {"enabled": true} and finished ip_enrichment success {"ips": 2, "new": 0, "enriched": 2}, with the stored overrides recording only the two that applied; a focused rescan still seeds (asset_seed success). Row checked in light and dark; the YAML lint warns only on an explicit enabled: false. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N2QTNoW3jEi3pX7uMLXBkk