Skip to content

feat(public/config): downstream curation hook for the docs guide set — glob is authoritative, no config override #3922

Description

@PierreBrisorgueil

Problem

A downstream project cannot control which docs guides ship without editing stack files (= drift). The public-docs guide list is assembled glob-only and the glob always wins:

  • config/assets.jsallGuides: 'modules/*/doc/guides/*.md'
  • config/index.js (~line 159) runs config.files = deepMerge(config, { files: initGlobalConfigFiles(assets) }) last, after all project/env layers — so a files.guides set in config/defaults/{project}.config.js is replaced, not merged (arrays are replaced by deepMerge).
  • The only filter applied afterwards is filterByActivation (module on/off, ~line 161-166).

Net: a downstream that ships its own curated docs (own welcome/quickstart/ordering) has no config-level hook to exclude or reorder guides. It either accepts every modules/*/doc/guides/*.md the stack ships, or deletes stack guide files (drift, blocked by the /update-stack gate).

This is the root mechanism behind #3921 (devkit sample home/{welcome,quickstart} guides collide with a downstream's own slugs). #3921 fixes the specific sample-guide instance; this issue asks for the general curation capability so downstream doc config is insulated from stack guide changes.

Affected file(s)

  • config/assets.js (allGuides glob — authoritative)
  • config/index.js (~159 glob applied last, replacing project files.guides)
  • lib/helpers/config.js (initGlobalConfigFiles, filterByActivation)
  • modules/public/services/public.docs.service.js (guideFiles() reads config.files.guides)

Suggested fix (pick one)

  • Exclusion knob: honor config.docs.excludeGuides (array of slugs or path globs) when building files.guides, applied alongside filterByActivation.
  • Override-aware merge: if project config explicitly sets files.guides / config.docs.guideGlobs, let it take precedence over the default allGuides glob instead of being overwritten.
  • Per-module opt-out: a module config flag (e.g. home: { shipSampleGuides: false }) so scaffolding guides can be dropped downstream without touching stack files.

Goal: a downstream can curate its docs set (drop devkit scaffolding, reorder) purely via config — no stack-file edits, no drift.

Related: #3921 (sample-guide slug collision — the symptom this mechanism causes).

Metadata

Metadata

Assignees

No one assigned

    Labels

    FeatA new feature

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions