Commit Graph

16 Commits

Author SHA1 Message Date
gsxdsm
cb64e874de docs: enrich engine singleton-lock learning after PR #1704 review
- Fix frontmatter enums (root_cause: logic_error, component: tooling); add #1699
  to related_prs and last_updated
- Reflect post-review behavior: external marker cleared at lock-acquire time;
  reconcile/startAll/onProjectAccessed swallow EngineAlreadyRunningError
- Add rejected approach (don't merge has()/hasRunningEngine) and the
  keep-them-distinct invariant
- Tighten socket-name detail (sha1[:16]); cross-link the browser-testing doc

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 03:35:16 -07:00
gsxdsm
7d312b416d docs: capture engine singleton-lock learning (EngineAlreadyRunningError != no engine)
Document the false "engine not running" banner root cause and fix as a
docs/solutions learning, and add an "Engine Singleton Lock" entry to
CONCEPTS.md: a failed per-machine lock acquisition is proof an engine is
running elsewhere, not "no engine."

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 03:15:22 -07:00
gsxdsm
65c49585d1 fix(review): address PR #1682 re-review (reuse concurrency + auth hardening)
- P1 (Greptile): a tool-use break-early turn released the warm connection
  (inUse=false) while conn.prompt() was still pending, letting the next turn
  launch a concurrent prompt on the same ACP session (protocol corruption).
  keepWarm now requires !sawToolCall, so a tool-use turn tears the connection
  down like the non-reuse path; only a clean stop turn (prompt fully resolved
  before finish) keeps it warm. + test.
- buildBridgeEnv: treat a whitespace-only auth var as absent (v.trim()), so a
  blank higher-preference token can't shadow a real lower-preference one and we
  never forward a useless blank token. + test.
- Auth-forwarding tests: clear ambient auth vars in beforeEach so a runner-env
  token can't shadow the case under test (CodeRabbit).
- Doc: clarify the allow-list never carries API keys by default; the single
  FUSION_CLAUDE_ACP_FORWARD_AUTH opt-in (default OFF) is the only exception.

348/348 pass, tsc clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 14:52:58 -07:00
gsxdsm
ffef0aad6a docs(solutions): ACP bridge 'Not logged in' — thin spawn env + keychain session isolation
Compound learning: the claude-code-cli-acp bridge returned 'Not logged in'
despite a working claude -p, due to (1) a too-thin spawn env (needs XDG_*/USER/
SHELL beyond HOME/PATH) and (2) macOS login-Keychain session isolation for
detached/headless processes. Six headless tasks misdiagnosed it as an upstream
gap. Cross-linked from the ACP runtime integration pattern doc.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 13:15:38 -07:00
gsxdsm
7cfc2168a2 FN-6111: alias bundled plugin views to source entries
Keep bundled plugin dashboard views loading from source so Compound Engineering no longer falls back to the unavailable placeholder.

- switch bundled dependency graph, roadmap, and compound engineering dashboard view loaders to static literal imports
- add vitest aliases for dependency graph and compound engineering dashboard view source entrypoints and cover the alias contract with regression tests
- document the missing-alias failure mode and the static-import requirement for bundled dashboard views

Files changed:
 .../bundled-plugin-vite-alias-missing.md            | 20 +++++++++++---------
 .../__tests__/registerBundledPluginViews.test.tsx   | 10 +++++++--
 .../app/plugins/registerBundledPluginViews.ts       | 19 +++++-------------
 .../runtime-plugin-alias-regression.test.ts         | 21 ++++++++++++++------
 packages/dashboard/vitest.config.ts                 |  8 ++++++++
 5 files changed, 49 insertions(+), 29 deletions(-)

Fusion-Task-Id: FN-6111

Fusion-Task-Lineage: a41b893c-4c14-4a2d-b0c9-47e1dbd0e1ef
2026-06-09 12:51:20 -07:00
gsxdsm
81c5bfeb27 FN-6085: avoid dashboard CSS import in plugin entry
Prevent the Compound Engineering plugin from pulling dashboard CSS into Node-side plugin loading.

- remove the dashboard view re-export from the Compound Engineering plugin server entry
- document the CSS-import failure mode caused by server-side index re-exports of dashboard views
- update bundled plugin registration guidance to keep dashboard view loading client-only

Files changed:
 docs/solutions/integration-issues/bundled-plugin-registration-drift.md |  4 ++--
 docs/solutions/integration-issues/bundled-plugin-vite-alias-missing.md | 13 ++++++++++++-
 plugins/fusion-plugin-compound-engineering/src/index.ts     |  1 -
 3 files changed, 14 insertions(+), 4 deletions(-)

Fusion-Task-Id: FN-6085

Fusion-Task-Lineage: 38e6d4de-18ff-4f7b-9ea4-39b0653b4cce
2026-06-09 12:50:26 -07:00
gsxdsm
ca96ba5d75 docs: compound Vite API proxy source module fix 2026-06-07 23:26:41 -07:00
gsxdsm
f49ab4946a Merge pull request #1463 from Runfusion/gsxdsm/issue-1455-initialize-git-repository
fix(FN-1455): initialize git during project registration
2026-06-06 01:08:31 -07:00
gsxdsm
c2da5883e7 fix(FN-1455): document project git registration invariant
Fusion-Task-Id: FN-1455
2026-06-06 00:59:01 -07:00
gsxdsm
c02cbde2bf docs(solutions): document bundled plugin Vite alias failure mode 2026-06-06 00:56:55 -07:00
gsxdsm
3bf803e6f3 Extend plugin registration-drift learning with entry-file contract details
- Expand the directory-path follow-up section: PR #1428, 400 no-entry
  branch, heal-on-enable in both routers
- Document the vitest fs-mock vs externalized workspace-dep trap and
  the real-fs drift-guard test pattern
- Add Plugin Entry to CONCEPTS.md Plugins cluster

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-04 22:33:23 -07:00
gsxdsm
4426eb8d74 Fix Settings plugin installs registering unloadable directory paths
Plugins installed from Settings → Built-in Plugins registered the
manifest directory as the plugin path, but since FN-4128 the loader
requires a loadable entry FILE (Node ESM cannot import directories),
so enabling failed with "Plugin entry must be a file, got directory".
Only the CLI startup path had been migrated to entry-file resolution,
which is why CLI-auto-installed plugins worked and Settings installs
never did.

- Add resolvePluginEntryPath (bundled.js → dist/index.js →
  src/index.ts) to @fusion/core; the CLI keeps its local copy (its
  test fs mocks don't reach externalized core) with sync comments
  both ways.
- Register the resolved entry file in both dashboard install routes;
  400 with a clear message when a package has no loadable entry.
- Heal legacy directory-path registrations on enable, mirroring the
  CLI's startup heal, so existing broken rows recover from the UI
  without a restart.
- Route tests: assert installs register entry files, cover the
  enable-route heal, and update existing install tests to the
  entry-file contract.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-04 21:57:46 -07:00
gsxdsm
19236a4bdd Document bundled-plugin registration drift learning
Capture the 4-list registration requirement for bundled plugins
(Settings catalog, dashboard fallback set, CLI auto-install list,
tsup staging) in docs/solutions/, and add the Bundled Plugin concept
to CONCEPTS.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-04 14:33:14 -07:00
gsxdsm
d1cd8b6ed8 merge main: unify CONCEPTS.md vocabularies and reconcile core exports
Both sides bootstrapped CONCEPTS.md — kept main's broader structure (Missions,
Merge lifecycle, CE sessions) and folded the branch-group vocabulary into its
Merge-lifecycle cluster (enriched Shared branch group + Self-healing sweep;
added Branch assignment mode, Landed, Group promotion). Union-merged core
index/store imports; took main's AGENTS.md discoverability wording. Also adds
execFile to the two child_process test mocks that only stubbed exec (the
coordinator's argv-based git calls now require it).
2026-06-03 15:57:41 -07:00
gsxdsm
1b83317cfe docs(solutions): document branch-group single-PR silent breakage; seed CONCEPTS.md
First docs/solutions/ learning: synthetic groupIds, mock-masked engine wiring,
and side-effect-free state flips (PR #1357 post-mortem). Seeds CONCEPTS.md with
the branch-group domain vocabulary and surfaces both knowledge stores in
AGENTS.md reference docs.
2026-06-03 15:11:19 -07:00
gsxdsm
db0cf7d415 docs(solutions): capture plugin bundled-skill loading learning
Document why PluginSkillContribution.skillFiles silently fails to load bundled
skills in live sessions (resolver only filters disk-discovered skills) and the
physical-install + additionalSkillPaths-forwarding fix, as a searchable
docs/solutions/ learning. Surface docs/solutions/ in AGENTS.md so agents
discover it.
2026-06-03 07:26:15 -07:00