docs(flows): DoD obligatorio con user-facing surface + abrir issues 0100-0103 (taxonomia, frontmatter migration, dev_console, work dashboard)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -61,6 +61,8 @@ func cmdDoctor(args []string) {
|
||||
}
|
||||
case "app-location":
|
||||
doctorAppLocation(r, jsonOut)
|
||||
case "modules":
|
||||
doctorModules(r, jsonOut)
|
||||
default:
|
||||
fmt.Fprintf(os.Stderr, "unknown doctor subcommand: %s\n", sub)
|
||||
doctorUsage()
|
||||
@@ -87,6 +89,7 @@ Subcommands:
|
||||
copied-code Detecta cuerpos de funcion del registry copiados en apps sin import (issue 0085k)
|
||||
capabilities Drift entre docs/capabilities/INDEX.md, tags de funciones, y paginas <grupo>.md (issue 0086)
|
||||
app-location Detecta artefactos (apps/analysis) en carpetas de lenguaje (cpp/apps/, etc.) - issue 0096
|
||||
modules Drift entre uses_modules (app.md) y fn_module_<x> link calls (CMakeLists.txt) - issue 0097
|
||||
|
||||
Flags:
|
||||
--json Salida JSON (para scripting/agentes)
|
||||
@@ -539,3 +542,49 @@ func doctorAppLocation(root string, jsonOut bool) {
|
||||
w.Flush()
|
||||
fmt.Printf("\n%d violation(s): move artefact to apps/<name>/ or projects/<p>/apps/<name>/ (issue 0096).\n", len(violations))
|
||||
}
|
||||
|
||||
func doctorModules(root string, jsonOut bool) {
|
||||
checks, err := infra.AuditModulesDrift(root)
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "error: %v\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
if jsonOut {
|
||||
emit(checks)
|
||||
return
|
||||
}
|
||||
|
||||
bad := 0
|
||||
w := tabwriter.NewWriter(os.Stdout, 0, 0, 2, ' ', 0)
|
||||
fmt.Fprintln(w, "STATUS\tAPP\tDECLARED\tLINKED\tMISSING\tEXTRA")
|
||||
for _, c := range checks {
|
||||
status := "OK"
|
||||
if !c.OK {
|
||||
status = "DRIFT"
|
||||
bad++
|
||||
}
|
||||
decl := strings.Join(c.Declared, ",")
|
||||
if decl == "" {
|
||||
decl = "-"
|
||||
}
|
||||
link := strings.Join(c.Linked, ",")
|
||||
if link == "" {
|
||||
link = "-"
|
||||
}
|
||||
missing := strings.Join(c.MissingLinks, ",")
|
||||
if missing == "" {
|
||||
missing = "-"
|
||||
}
|
||||
extra := strings.Join(c.ExtraLinks, ",")
|
||||
if extra == "" {
|
||||
extra = "-"
|
||||
}
|
||||
fmt.Fprintf(w, "%s\t%s\t%s\t%s\t%s\t%s\n", status, c.AppID, decl, link, missing, extra)
|
||||
}
|
||||
w.Flush()
|
||||
fmt.Printf("\n%d/%d apps with module drift.\n", bad, len(checks))
|
||||
if bad > 0 {
|
||||
fmt.Println("Fix: align uses_modules in app.md with target_link_libraries(fn_module_*) in CMakeLists.txt.")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user