FnTools Repo Extraction

This is the concrete extraction plan for the first FnTools repo.

Goal

Create a reusable-library repo that owns the current FnTools.FnHCI* line and can be consumed by downstream apps such as CheddarBooks.LaundryLog.

Current Owned Inventory In NEXUS

Code Projects

  • NEXUS-Code/src/Nexus.FnHCI/
  • NEXUS-Code/src/Nexus.FnHCI.UI/
  • NEXUS-Code/src/Nexus.FnHCI.UI.Blazor/

These project paths still carry older Nexus.FnHCI names, but the code namespaces now use:

  • FnTools.FnHCI
  • FnTools.FnHCI.UI
  • FnTools.FnHCI.UI.Blazor

Tests

  • NEXUS-Code/tests/FnTools.Tests/

Docs That Move

Docs That Stay In NEXUS

FnTools/
  README.md
  FnTools.slnx
  src/
    FnTools.FnHCI/
    FnTools.FnHCI.UI/
    FnTools.FnHCI.UI.Blazor/
  tests/
    FnTools.Tests/
  docs/
    foundation.md
    namespace-map.md
    fnui-requirements.md
    fnui-web-requirements.md
    fnui-native-host-requirements.md
    conversation-reading-surface.md
    decisions/
      0001-fnhci-owns-the-top-interaction-namespace.md

Extraction Steps

  1. Create the new FnTools repo from the NEXUS baseline bb87d037.
  2. Use the bootstrap runbook and script to stage the owned projects, tests, and docs into the new repo root.
  3. Rename project folders and project files:
  4. Nexus.FnHCI -> FnTools.FnHCI
  5. Nexus.FnHCI.UI -> FnTools.FnHCI.UI
  6. Nexus.FnHCI.UI.Blazor -> FnTools.FnHCI.UI.Blazor
  7. Update assembly names, package IDs, and solution entries to match.
  8. Remove any lingering Nexus.* naming that is only historical scaffolding.
  9. Add a bootstrap README section that says this repo was extracted from NEXUS-EMERGING at bb87d037.
  10. Build and run FnTools.Tests from the new repo root.
  11. Tag the first clean extraction baseline in the new repo.

Immediate Success Criteria

  • repo-local dotnet build succeeds
  • repo-local FnTools.Tests succeeds
  • no project reference points back into NEXUS-EMERGING
  • namespaces, project names, and folder names all consistently use FnTools.FnHCI*
  • the repo can be consumed as a library line by downstream repos

Immediate Follow-Up After Extraction

After the repo exists and builds cleanly:

  1. choose the first package naming/versioning convention
  2. decide whether initial downstream consumption is:
  3. private/local package feed
  4. GitHub Packages
  5. direct source linkage only during bootstrap
  6. update NEXUS docs to point to the new repo for active FnTools work

Why FnTools Goes First

FnTools is the easiest split because:

  • it has no current dependency on Nexus.* runtime projects
  • its tests are already isolated
  • it is the upstream dependency for CheddarBooks

Runbook