harn-parser 0.10.30

Parser, AST, and type checker for the Harn programming language
Documentation
# HARN-LNT-067 — public callable type is missing

A public function or pipeline parameter or return has no explicit type while
the package enables complete public API contracts.

Untyped private callables remain inferable. Public callables cross a module
boundary, so their contract must be visible without inspecting the body or a
particular caller.

```harn
pub fn load(path) {                  // warning: parameter and return are untyped
  return {path: path}
}

pub pipeline deploy(config) {        // warning: parameter and return are untyped
  return true
}
```

## How to fix

Annotate every public parameter and return:

```harn
pub fn load(path: string) -> {path: string} {
  return {path: path}
}

pub pipeline deploy(config: DeployConfig) -> bool {
  return true
}
```

Use `unknown` or `any` when the boundary is intentionally dynamic. Those are
explicit contracts; omitting the annotation is not.

Enable this policy for a package with:

```toml
[lint]
require_public_api_types = true
```

or for one lint invocation with `harn lint --require-public-api-types`.

The rule does not choose or insert a type automatically because selecting a
public contract is an API-design decision.