The repos-directory auto-scan is removed; dashboard "Add project" is the only onboarding path (fix #1600) - #1602
Conversation
|
🤖 agent comment A plain-language walkthrough of the five SPEC changes in this PR, for the human read-through: 1.
2.
3.
4.
5.
Short version: changes 1–3 describe the new behavior, changes 4–5 keep the test-coverage summaries honest. All five follow from one sentence: a repo must get its protective ignore file before any agent touches it, and the framework's own root symlinks must never ride a commit onto your branches. |
|
A concern I have is that it would be too aggressive. If I add |
|
How about we skip the whole "add all repos in directory" feature for now? |
|
And focus on the core USPs instead |
|
It is opt-in ( +1 to dropping it. I'll reshape this PR: delete the auto-scan, keep the two independent fixes (activation = the ignore file, hide the root |
…e onboarding path (#1600) Per the review discussion: the boot-time auto-scan got too aggressive once it ran the installer (which commits) in every repo under the directory. The feature goes entirely — registerReposDirectory, the repos-directory module, the reposDirectory/reposDirectoryAutoGrant preferences, their tests, and the FEATURES-SPEC row. The two independent fixes stay: activation = the install-written ignore file, and the root branches symlink excluded from git at creation. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…d "root shortcut" Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
🤖 agent comment SPEC walkthrough for the reshaped PR (supersedes the walkthrough above, which described the now-deleted auto-scan changes). Per modified SPEC file: where it sits, the diff, and why. 1. | 3 | Activate a repo from the dashboard (commits dirty state, creates `.the-framework/`, teaches `.gitignore`, registers it) |
-| 4 | Auto-register every repo under a configured "repos directory" |
| 5 | Onboarding checklist — each step derived from a real fact, not a click |The feature is gone, so its row goes. Row 4 stays a gap rather than renumbering everything after it — the numbers are referenced elsewhere as ids (the file already has 124 sitting out of order for the same reason). 2. -- A repo counts as activated when the framework's marker directory exists; creating it is a separate concern.
+- A repo counts as activated when the ignore file the install writes exists — the file that keeps the framework's transient state off the repo's branches. That way a repo can never look activated while it still lacks the one protection activation is about; writing it is a separate concern.This is kept fix 1 and the core of #1600: under the old rule, a 3. -- At boot it registers the home project (and, when opted in, every repo in the user's repos directory), marks agents a dead process left "running" as stopped, and starts the background services. It resumes nothing: Ctrl-C was deliberate.
+- At boot it registers the home project, marks agents a dead process left "running" as stopped, and starts the background services. It resumes nothing: Ctrl-C was deliberate. Every other project joins through the dashboard's "Add project" — the one onboarding path, so a repo is always installed before an agent can touch it.The parenthetical described the deleted auto-scan. The added sentence states the invariant the deletion buys: with a single onboarding path that installs before registering, no repo can be registered without its ignore file. 4. -… event-log tailing, home-project and repos-directory registration rules, and starts over the dashboard …
+… event-log tailing, home-project registration rules, and starts over the dashboard …The repos-directory registration tests are deleted with the feature, so the coverage sentence stops claiming them. 5. - A session on a branch whose name cannot be a folder name (old slashed names) simply gets no link.
+- The `branches` shortcut at the repo root is hidden from git the moment it is made — it is the framework's, and left visible it would ride any sweeping commit onto a work branch. A user's own `branches` folder is never hidden.This is kept fix 2. The symlink is framework-created; before, git saw it as a new untracked file at the repo root, so any sweeping 6. -… the repo-root shortcut is created once without clobbering, and the daemon pass visits every project.
+… the repo-root shortcut is created once without clobbering and hidden from git at creation (while an occupied path stays visible), and the daemon pass visits every project.New tests prove the hiding behavior and that a path occupied by the user's own entry is left visible, so the coverage sentence grows to match. 7. Short version: 1, 3, 4 and 7 remove the feature from the record; 2 and 5–6 describe the two kept fixes. All of it follows from one sentence: a repo must get its protective ignore file before any agent touches it, and the framework's own root symlink must never ride a commit onto your branches. |
|
Done — auto-scan deleted (prefs + FEATURES row 4 with it), the two fixes kept: activation = the install-written ignore file, root Dogfooded live: a repo with a pre-existing bare @brillout ready for another look. |
|
Good |
🤖 agent PR
Reshaped per the review discussion below: the repos-directory auto-scan turned out to be too aggressive once it ran the installer (which commits) in every repo under the directory — so instead of hardening it, this PR deletes it. The dashboard's "Add project" is the only onboarding path, and it already installs before registering, so every onboarded repo gets the framework's self-ignoring
.the-framework/.gitignorebefore any agent cangit add -Aframework state onto a work branch (the #1600 bug).Removed (feature #1123, row 4 of FEATURES-SPEC.md):
registerReposDirectoryand the boot-time scan insrc/daemon.tsrepos-directory.tsmodule and its tests/SPECsreposDirectory/reposDirectoryAutoGrantpreferences (src/registry.ts) and their testsKept — the two independent fixes from #1600's instances 2 and 3:
isActivated(src/project.ts) now reads the same marker install's own no-op check reads:.the-framework/.gitignore. A.the-framework/directory something else created can no longer read as activated forever while the repo still lacks the ignore file.branchessymlink is hidden from git at creation.reconcileBranchLinks(src/branch-links.ts) applies the same repo-level exclude pair as All framework data moves to the tf-data branch (fix #1582) #1595'sticketslink (/branches+!/branches/, so a user's ownbranchesdirectory keeps committing).Tests: the repos-directory and preference tests are gone with the feature; the activation tests moved to the ignore-file marker (daemon tests fake activation by writing it); the root-symlink test asserts the exclude pair fires at creation and never for a user's own entry. Full suite green (1498 node + 772 dashboard).
SPEC updates (want a human read-through — walkthrough in the comments):
FEATURES-SPEC.md,project.SPEC.md,daemon.SPEC.md,branch-links.SPEC.md, the two test SPECs, and the two deletedrepos-directorySPECs.