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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions