{"record":{"id":"36f06b2b88e987bb","repo":"larksuite/cli","slug":"postmount-replaced-typed-command-validation-execu","errorCode":null,"errorMessage":"PostMount replaced Typed command validation, execution, or Help functions","messagePattern":"PostMount replaced Typed command validation, execution, or Help functions","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"shortcuts/common/typed_mount_guard.go","lineNumber":73,"sourceCode":"\t\tfor key, values := range flag.Annotations {\n\t\t\tannotations[key] = append([]string{}, values...)\n\t\t}\n\t\tsnapshot.flags[flag.Name] = typedMountedFlag{\n\t\t\tvalueType: flag.Value.Type(), defaultValue: flag.DefValue, usage: flag.Usage,\n\t\t\tshorthand: flag.Shorthand, noOptDefault: flag.NoOptDefVal, deprecated: flag.Deprecated,\n\t\t\thidden: flag.Hidden, annotations: annotations,\n\t\t}\n\t})\n\treturn snapshot\n}\n\nfunc validateTypedPostMount(command *cobra.Command, before typedMountSnapshot) error {\n\tafter := captureTypedMountSnapshot(command)\n\tif before.use != after.use || before.short != after.short || before.long != after.long || before.example != after.example || !reflect.DeepEqual(before.aliases, after.aliases) {\n\t\treturn fmt.Errorf(\"PostMount modified Typed command metadata or Help text\")\n\t}\n\tif before.argsFunc != after.argsFunc || before.preRunFunc != after.preRunFunc || before.runFunc != after.runFunc || before.usageFunc != after.usageFunc || before.helpFunc != after.helpFunc {\n\t\treturn fmt.Errorf(\"PostMount replaced Typed command validation, execution, or Help functions\")\n\t}\n\tif !reflect.DeepEqual(before.annotations, after.annotations) {\n\t\treturn fmt.Errorf(\"PostMount modified Typed command annotations\")\n\t}\n\tnames := make([]string, 0, len(before.flags)+len(after.flags))\n\tseen := make(map[string]struct{}, len(before.flags)+len(after.flags))\n\tfor name := range before.flags {\n\t\tseen[name] = struct{}{}\n\t\tnames = append(names, name)\n\t}\n\tfor name := range after.flags {\n\t\tif _, ok := seen[name]; !ok {\n\t\t\tnames = append(names, name)\n\t\t}\n\t}\n\tsort.Strings(names)\n\tfor _, name := range names {\n\t\tbeforeFlag, existedBefore := before.flags[name]","sourceCodeStart":55,"sourceCodeEnd":91,"githubUrl":"https://github.com/larksuite/cli/blob/7fd6ef3c07182257ce776cdc5a614e122d5bd4b3/shortcuts/common/typed_mount_guard.go#L55-L91","documentation":"PostMount integrity guard: a PostMount hook replaced the Typed command's Validate/E (execution) or Help function pointers, bypassing the compiled typed pipeline.","triggerScenarios":"Thrown at shortcuts/common/typed_mount_guard.go:73 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Hook execution via the framework's extension points instead of overwriting the funcs"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"7fd6ef3c07182257ce776cdc5a614e122d5bd4b3","analyzedAt":"2026-09-04T21:17:44.649Z","contentChangedAt":"2026-09-04T21:17:44.649Z","schemaVersion":2},"datasetVersion":"2026-09-12T02:17:10.037Z"}