The devops build system is configured by a @file{config.scm} file in
its build area, @file{devops/} (possibly a symbolic link). The
@file{devops/config.scm} file is loaded into the @code{(devops)}
-package where it can find procedures to set build system variables and
-customize any part of the build processes.
+package where it can find procedures to set build system variables.
@deffn Procedure project-name [name]
Returns the project name (a string) after setting it to @var{name}
is set the project name is @code{"new-scheme"}.
@end deffn
+@anchor{plugin}
@deffn Procedure plugin name directory
Adds a plugin to the project. @var{Name} should be a string. It will
be concatenated with the project name and a hyphen to create package
All of the devops release procedures warn of ``lint'' in the source
code and documentation. At the moment, only out-of-date version
-numbers are detected.
+numbers are detected. Eventually a few more standard constraints
+might be checked, but lint detection is a matter of rather
+idiosyncratic project policy. Most lint detection is expected to
+happen in the lint hooks.
+
+@deffn Procedure core-lint-hook version changes dirt
+If true, the value of this binding is applied to three arguments.
+@enumerate
+@item
+@var{version}---A string like @code{"9.2.7"}.
+@item
+@var{changes}---A list of strings, the paths (relative to the root of
+the git working directory tree) to files that have changed since the
+last release.
+@item
+@var{dirt}---A list of strings, the paths (relative) to the ``dirty''
+files, files with uncommitted changes.
+@end enumerate
+The value of the hook should be a list of strings, messages for the
+luser.
+@end deffn
+
+@deffn Procedure plugin-lint-hook plugin version changes dirt
+Like @code{core-lint-hook} but takes an additional argument:
+@var{plugin}---an object created by the @code{plugin} procedure.
+@end deffn
+
+A few procedures are made available in the @code{(devops)} package to
+aid in the definition of procedures that check for project policy
+violations.
+
+A couple procedures can be applied to the plugin objects passed as
+arguments to the @code{plugin-lint-hook}. They access the name and
+directory provided to the @code{plugin} procedure when the object was
+created. @xref{plugin}.
+
+@deffn Procedure plugin-name plugin
+Returns the string naming the @var{plugin} object.
+@end deffn
+
+@deffn Procedure plugin-directory plugin
+Returns the string naming the subdirectory of the git repository, the
+root of @var{plugin}'s source tree.
+@end deffn
+
+There is just one procedure for checking policy.
+
+@deffn Procedure plugin-deffn-lint plugin pkg exceptions
+If @var{plugin}'s source contains a @file{.texi} file with the same
+name, check that it has a Texinfo @code{@@deffn} for each binding
+exported to the global package and the @var{pkg} package (if @var{pkg}
+is not false). @var{Exceptions} should be a list of names (symbols)
+to ignore.
+@end deffn
@menu
* Core Lint::