{"record":{"id":"d4437c9e71224c6b","repo":"larksuite/cli","slug":"postmount-modified-typed-command-metadata-or-help","errorCode":null,"errorMessage":"PostMount modified Typed command metadata or Help text","messagePattern":"PostMount modified Typed command metadata or Help text","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"shortcuts/common/typed_mount_guard.go","lineNumber":70,"sourceCode":"\t}\n\tcommand.LocalFlags().VisitAll(func(flag *pflag.Flag) {\n\t\tannotations := make(map[string][]string, len(flag.Annotations))\n\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}","sourceCodeStart":52,"sourceCodeEnd":88,"githubUrl":"https://github.com/larksuite/cli/blob/7fd6ef3c07182257ce776cdc5a614e122d5bd4b3/shortcuts/common/typed_mount_guard.go#L52-L88","documentation":"PostMount integrity guard: a PostMount hook changed the Typed command's metadata (Use/Short/Long/Example/aliases) or Help function, which the typed framework owns and forbids mutating.","triggerScenarios":"Thrown at shortcuts/common/typed_mount_guard.go:70 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Move metadata changes into the declarative definition; use PostMount only for non-metadata wiring"],"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"}