Repository navigation
[Feature]: Let a project declare optional components absent by choice, so fw doctor stays green and readable #98
Description
Problem
A consumer project can deliberately run without some optional components. Here: no embedding service (Ollama: memory is tight on the host), no Playwright (no framework UI tests in a consumer), no TermLink and no cross-host messaging, no framework cron (fw cron install needs root and the two seeded jobs serve the components above).
The framework has no way to record that choice, so fw doctor exits 1 forever:
- six FAIL lines for the vector index (
index,manifest,age,lag,canary,token) plusWARN usage: recallandWARN [host] embed endpoint not reachable.lib/config.shonly offers thresholds (INDEX_MAX_AGE_HOURS,RECALL_FAIL_PCT_WARN...), no switch; WARN Playwright pip package missing;WARN Cron registry present but not generated(the seeded jobs aresidecar-sweep-5mandindex-reindex-hourly);WARN Sidecar watcher live but INERT: TermLink absentandWARN [host] TermLink not installed.
MESSAGING_TOOLKIT: 0 (T-4042, thank you) stops the slash commands and scripts, but not the sidecar: the sidecar-autostart SessionStart hook still starts a receiver and two watchers for every session (agents/context/sidecar-autostart.sh); the only opt-outs are the environment variable FW_SIDECAR_AUTOSTART=0, which belongs to the launcher, not to the project, and fw sidecar stop.
A doctor that is always red teaches the operator to stop reading it, and the real failures are lost among the expected ones.
Proposed Solution
- One project-level switch per optional component in
.framework.yaml, read byfw doctorandfw audit, for exampleSEMANTIC_INDEX: 0,UI_TESTS: 0,SIDECAR: 0. When off, the related checks printSKIP <name> (disabled in .framework.yaml)and do not count toward the exit code. MESSAGING_TOOLKIT: 0also implies no sidecar autostart and nosidecar-sweep-5mjob (orSIDECAR: 0as its own key, documented next to it).fw cron generateleaves out jobs whose component is off, sofw cron installinstalls only what is used.fw upgradekeeps these keys, as it already keepsMESSAGING_TOOLKIT.
Subsystem
Task Management
Scope
None
Alternatives Considered
- Install everything: Ollama costs memory the host does not have; Playwright and TermLink serve nothing in this project.
- Live with the red doctor: that is what happens now, and it hides real failures.
FW_SIDECAR_AUTOSTART=0in the launcher: it works for the sidecar only, and the setting then lives outside the project.
Additional Context
1.8.11 (e42aa41), vendored consumer, Linux (Ubuntu 20.04, systemd 245), Claude Code. Found during a review of the installation after upgrading from 1.8.6. Related defects found in the same review (smoke test, cron OK, resolver-loop, turn driver) are reported separately; this request is only about declaring components absent.
Activity
DimitriGeelen commentedon Oct 18, 2026
[AEF intake] Received — 2026-10-18
Thank you. This issue has been ingested into the Agentic Engineering Framework's intake as INTAKE-0014. Next step: classification (type, affected area, severity, whether it reproduces on the current release and on bleeding-edge). You will get a comment here at each step: classified → decision → in progress → fixed on bleeding-edge → available for testing → released.
These status updates are automated, but Dimitri personally looks at every issue and decides what happens to it. Replies on this issue are read.
DimitriGeelen commentedon Oct 18, 2026
[AEF intake] Classified — 2026-10-18
Type: enhancement. Area: config and
fw doctor. Severity: low. Reproduces: not applicable. No key declares a component absent by choice inlib/config.sh(checked by search). Duplicates: none found. Design question for the maintainer: an opt-out per component, or a suppression list in doctor.Awaiting the maintainer's decision.
These status updates are automated, but Dimitri personally looks at every issue and decides what happens to it. Replies on this issue are read.
DimitriGeelen commentedon Oct 18, 2026
[AEF intake] Accepted — 2026-10-18
Tracked as T-4355, prioritised (horizon: now). Next update here: in progress.
These status updates are automated, but Dimitri personally looks at every issue and decides what happens to it. Replies on this issue are read.
DimitriGeelen commentedon Oct 20, 2026
[AEF intake] In progress — 2026-10-20
Work has started under T-4355. Next update here: fixed on bleeding-edge.
These status updates are automated, but Dimitri personally looks at every issue and decides what happens to it. Replies on this issue are read.
T-4355: stop before build, #98 mechanism is the operator's choice per…