Commit Graph

6 Commits

Author SHA1 Message Date
gsxdsm
631e8fc675 FN-7159: add canonical CE HTML checklist repair
Enable CE HTML document review to safely canonicalize malformed checklists.

- Add a DOM-safe checklist-repair operation that rewrites provable markdown-marker and checkbox list shapes into canonical CE checklist HTML.
- Refuse ambiguous, nested, state-bearing, or protected checklist-like markup while preserving report-only fallback semantics.
- Expand HTML mutation and CE doc-review tests plus operator docs and rendering guidance for the canonical checklist contract.

Files changed:
 .changeset/fn-7159-canonical-html-checklist.md     |   7 +
 docs/workflow-editor.md                            |   2 +-
 docs/workflow-steps.md                             |   5 +-
 .../src/__tests__/ce-doc-review-html-mode.test.ts  |   6 +-
 .../src/artifacts/__tests__/html-mutation.test.ts  | 135 ++++++++++++++-
 .../src/artifacts/html-mutation.ts                 | 186 ++++++++++++++++++++-
 .../ce-brainstorm/references/html-rendering.md     |  31 ++++
 .../src/skills/ce-doc-review/SKILL.md              |  13 +-
 .../skills/ce-ideate/references/html-rendering.md  |  31 ++++
 .../skills/ce-plan/references/html-rendering.md    |  31 ++++
 10 files changed, 436 insertions(+), 11 deletions(-)

Fusion-Task-Id: FN-7159
Fusion-Task-Lineage: bbde7003-2942-4363-98d5-53bc3a5976b8
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-28 09:20:17 -07:00
gsxdsm
fecb27e768 FN-7149: add DOM-safe CE HTML mutation
Add a parse5-backed mutation path for CE HTML artifacts with docs and validation coverage.

- Add safe CE HTML mutation helpers for open-question append, heading repair, whitespace normalization, visible-text replacement, atomic writes, and rollback on validation failure.
- Cover DOM mutation behavior and ce-doc-review HTML-mode expectations with focused tests.
- Update CE skill/reference guidance and workflow docs to require DOM-safe artifact edits with report-only fallback.
- Add parse5 to the compound engineering plugin and record the published CLI changeset.

Files changed:
 .changeset/fn-7149-dom-safe-html-mutation.md       |   7 +
 docs/workflow-editor.md                            |   2 +-
 docs/workflow-steps.md                             |  10 +-
 .../package.json                                   |   1 +
 .../src/__tests__/ce-doc-review-html-mode.test.ts  |  38 +-
 .../src/artifacts/__tests__/html-mutation.test.ts  | 228 +++++++++
 .../src/artifacts/html-mutation.ts                 | 519 +++++++++++++++++++++
 .../src/skills/ce-brainstorm/references/handoff.md |  12 +-
 .../ce-brainstorm/references/html-rendering.md     |  12 +-
 .../src/skills/ce-doc-review/SKILL.md              |  20 +-
 .../skills/ce-ideate/references/html-rendering.md  |  12 +-
 .../src/skills/ce-plan/SKILL.md                    |  18 +-
 .../skills/ce-plan/references/html-rendering.md    |  16 +-
 .../src/skills/ce-plan/references/plan-handoff.md  |  24 +-
 pnpm-lock.yaml                                     |   3 +
 15 files changed, 853 insertions(+), 69 deletions(-)

Fusion-Task-Id: FN-7149

Fusion-Task-Lineage: eaf84a8b-a52b-487d-9517-22e4499e8af7

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-28 08:03:32 -07:00
gsxdsm
b69dd8eb14 FN-7103: alias brainstorm artifacts to unified plans
Compound Engineering now treats brainstorm output as the requirements-only form of unified plan artifacts.

- Point the brainstorm stage at docs/plans while keeping the existing stage and skill identifiers for compatibility.
- Surface CE plan frontmatter metadata during artifact discovery and reading.
- Harden CE artifact discovery against symlink escapes for conventional artifact paths.
- Update docs, tests, and changeset coverage for the unified brainstorm/plan artifact flow.

Files changed:
 .changeset/fn-7103-ce-plan-alias.md                |   7 ++
 docs/plugins/compound-engineering.md               |  21 +++-
 .../fusion-plugin-compound-engineering/README.md   |  36 ++++--
 .../orchestrator-interrupt-resume.test.ts          |   8 +-
 .../src/__tests__/session-store.test.ts            |  38 ++++++
 .../src/__tests__/stage-registry.test.ts           |  18 +++
 .../src/__tests__/sync.test.ts                     |  36 +++++-
 .../src/artifacts/__tests__/discovery.test.ts      | 133 +++++++++++++++++++-
 .../src/artifacts/discovery.ts                     | 136 +++++++++++++++++++--
 .../src/session/stage-registry.ts                  |  10 +-
 .../src/sync/reconciler.ts                         |   2 +-
 11 files changed, 413 insertions(+), 32 deletions(-)

Fusion-Task-Id: FN-7103

Fusion-Task-Lineage: 284a5c5c-40f7-44b2-8e3e-1de671dde36a

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 09:28:30 -07:00
gsxdsm
08312bb59d fix(compound-engineering): correctness fixes from code review
- reconciler: a deleted current-stage board task no longer wedges the pipeline
  in 'running' forever (terminality computed over existing tasks only; all-deleted
  is a no-op, not a wedge)
- session-store: a human-slow awaiting_input session is no longer misclassified
  stale (interval rubric applies only to in-flight active/launching turns)
- stage-registry: pipeline progression uses an explicit order ordinal instead of
  registry insertion order, so out-of-order registration can't corrupt advancement
- orchestrator.answer(): validate questionId before mutating state, so a stale id
  can't destroy the persisted currentQuestion recovery anchor
- orchestrator.resume(): rehydrate a live interactive session by replaying
  persisted history (side effects suppressed) so a resumed session is actually
  answerable instead of dead-ending; honest interrupted+error fallback when no
  factory is available

95 tests (6 new regression tests, each confirmed failing pre-fix).
2026-06-02 20:42:44 -07:00
gsxdsm
061297b432 refactor(compound-engineering): consolidate duplication from simplify pass
Quality cleanup across the 9-unit build (behavior-preserving, 89 tests green):
- extract createCeTaskWithLink so the work bridge and reconciler share one
  provenance+link contract (prevents drift)
- discovery list scan probes readability via accessSync instead of reading and
  discarding full file bytes
- makeError helper replaces ~7 duplicated CeArtifactError literals
- shared asString route helper; drop dead pipelineIds set; collapse a double
  pipeline-state write and a redundant link re-query in advance
- resolveStageSkillCwd no longer takes params it ignores
2026-06-02 20:15:29 -07:00
gsxdsm
8bb459702c feat(compound-engineering): artifact hub view, discovery, read routes (U3)
Add allowlist-based artifact discovery over the conventional CE locations
(STRATEGY.md, docs/ideation, docs/brainstorms, docs/plans, docs/solutions,
CONCEPTS.md), grouped by stage, with error entries for unreadable artifacts and
no reads outside the allowlist. Add list/read/preview routes (self-contained
sandboxed HTML, data-section markers) and the primary CompoundEngineeringView
with explicit empty/partial/error states, viewport-gated fetch, and a short-TTL
cache. Bind the view via registerBundledPluginViews + dashboard workspace dep
(the real binding; manifest componentPath is cosmetic).
2026-06-02 19:25:54 -07:00