v1.9.3
DeepDoc 1.9.3 fixes backend navigation quality for real-world repos: path-slug sections produced by the classify LLM (e.g. new-src-api-services-order-index-ts) are now detected and replaced with proper domain sections, database and runtime buckets use flat canonical section names, and OpenAPI specs are rewritten so Fumadocs can resolve paths directly.
Added
- Added
_looks_like_path_slug_section()inbucket_injection.pyandnav_shaping.py— detects all-lowercase-hyphenated section values that look like file path cluster IDs (e.g.new-src-api-services-sync-index-ts) so they are always recategorized rather than preserved. - Added
_is_backend_placeholder_section()inbucket_injection.py— rejects generic placeholder section names (Architecture,Core,Features,Services,Subsystems,Runtime & Frameworks) for backend repos so they are replaced with a specific domain section. - Added
_BACKEND_INTEGRATION_TOKENS,_BACKEND_OPERATION_TOKENS, and_BACKEND_RUNTIME_TOKENStoken sets inbucket_injection.pyfor finer-grained backend section routing (Integrations, Operations, Background Jobs). - Added a dedicated
_BACKEND_ORDERsection ranking list innav_shaping.py— backend repos now get a fixed reader-first ordering:Start Here→Overview→Core Workflows→API Reference→Data Model→Background Jobs→Integrations→Operations→Supporting Infrastructure→ tail sections. - Added
_spec_base_path()and_write_spec()helpers inpipeline_v2.py—_spec_base_pathextracts the server base path from OpenAPI 3servers[]or Swagger 2basePath;_write_specwrites the rewritten spec as YAML or JSON depending on file suffix. - Added "Last indexed" provenance badge to the generated Fumadocs docs page (
scaffold_files.py) — readsdeepdoc_generated_atanddeepdoc_generated_commitfrom page frontmatter and renders a muted timestamp + short commit ID above the page body.
Changed
_canonical_section_for_bucket()now rejects path-slug sections and backend placeholder sections before preserving the existing section, so classify-step noise no longer leaks into final nav.- Backend bucket section routing reordered:
Data Layercheck moved before runtime/integration checks;Subsystemsfallback replaced withCore Workflows; added explicitOperationsbucket for config/logging/monitoring tokens;Supporting Infrastructurereplaces the oldRuntime & Frameworkscatch-all for middleware/auth/route/controller buckets. - Normalized all database bucket sections from
Database > Database & Schemato flatData Model(specializations.py). - Normalized all runtime bucket sections from
Background Jobs > Background Jobs & Runtimeto flatBackground Jobs(specializations.py). - OpenAPI staging in
pipeline_v2.pynow rewrites the spec before saving: bakes the server base path into every path key and resetsserversto[{"url": "/"}]so Fumadocs can do a direct dict lookup without prepending the server origin. - OpenAPI nav entries are now placed under a top-level
API Playgroundfolder instead of being nested inside the existingAPI Referencefolder (engine.py).
Tests
- Added
test_shape_plan_nav_recategorizes_path_slug_backend_sections— verifies thatnew-src-*path-slug sections are all replaced and buckets land inCore Workflows,Integrations,Operations, andSupporting Infrastructureas appropriate. - Updated
test_shape_plan_nav_backend_uses_reader_flow_and_dedupes_setupsection assertion fromArchitecturetoCore Workflowsto match new routing. - Updated
test_specialized_bucket_injection_splits_large_database_docs_and_adds_runtime_pagesassertion fromDatabase > Database & SchematoData Model. - Updated
test_build_fumadocs_from_plan_creates_site_scaffoldto assert provenance badge fields (deepdoc_generated_at,deepdoc_generated_commit,Last indexed:,Intl.DateTimeFormat) are present in the generated docs page.