Skip to content

Preflight fails on boot: sub_dir default still uses pre-kennel-rename path #919

@FidoCanCode

Description

@FidoCanCode

Observed

Second maiden-voyage boot after the _startup_pull fix (#918) merged. Supervisor reaches preflight, then the container exits:

17:45:53 INFO  [supervisor] fido image cache hit fido:local
17:45:53 INFO  [supervisor] starting container image=fido:local
17:45:56 INFO  [-] preflight: all required tools found: git, gh, claude, copilot
preflight: skill-files directory not found: /workspace/src/sub
17:45:56 ERROR [supervisor] container exited code=1 action=fail

Supervisor treats the preflight failure as action=fail and stops (no auto-retry).

Root cause

src/fido/config.py:114 computes the default sub_dir:

sub_dir=Path(__file__).resolve().parent.parent / "sub",
  • __file__ = /workspace/src/fido/config.py (in-container)
  • .parent = /workspace/src/fido
  • .parent again = /workspace/src
  • / "sub" = /workspace/src/sub

But the actual sub/ directory is at the repo root: /workspace/sub. So the default path is off by one.

This formula was correct when Fido's Python package lived directly at the repo root (kennel/). The package moved to src/fido/ — one level deeper — so the relative walk back to sub/ now needs to go up one more level. Pure leftover of the rename.

Proposed fix

Change the default to parents[2] / "sub":

sub_dir=Path(__file__).resolve().parents[2] / "sub",

That yields /workspace/sub — which exists and contains persona.md, setup.md, task.md, ci.md, resume.md.

Test plan

  • Add a unit test that Config.from_args with default sub_dir points at a directory containing the five canonical sub-skill files.
  • Manual: ./fido up clears preflight and reaches starting container-to-worker-up without sub_dir errors.

Why this didn't blow up in CI

CI runs ./fido ci which builds buildx targets but does not exercise run()'s preflight. A dedicated Config default-path test would have caught this.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions