# The site generator's authority

This site is built by `site/build.osk`, an Oska program. Just before each build, `oskac check site/build.osk` prints the program's authority report, and the build publishes it here as it was printed. There is one line per function: the capabilities it can reach, each with the parameter it comes through, or `pure` if it can reach none. `main` is granted `FsRead` and `FsWrite`, which can only be narrowed, so only the functions it passes a directory or file capability to can touch the filesystem. Each indented line under a function is an attenuation: a place where it narrows a capability, with the kind it narrows from and to and its root, or `computed at runtime` when the root is not a literal. `main`'s attenuations are the generator's real reach: the files and directories it reads, and the directory it writes.

```text
fn main: FsRead (read), FsWrite (write)
  FsRead -> DirRead: restrict_to "docs" (bytes 2669..2693)
  FsRead -> FileRead: restrict_to_file "README.md" (bytes 2711..2745)
  FsRead -> FileRead: restrict_to_file "GLOSSARY.md" (bytes 2765..2801)
  FsRead -> FileRead: restrict_to_file "site/style.css" (bytes 2818..2857)
  FsRead -> FileRead: restrict_to_file "Cargo.toml" (bytes 2877..2912)
  FsRead -> FileRead: restrict_to_file "site/search.js" (bytes 2930..2969)
  FsRead -> DirRead: restrict_to "site/agent-setup" (bytes 2986..3022)
  FsRead -> FileRead: restrict_to_file "site/authority.txt" (bytes 3043..3086)
  FsWrite -> DirWrite: restrict_to "." (bytes 3255..3277)
  DirWrite -> DirWrite: restrict_to "_site" (bytes 3337..3372)
fn build: DirRead, FileRead (sources), DirWrite (site)
fn cname: pure
fn has_doc: pure
fn gather: DirRead, FileRead (sources)
fn version_of: pure
fn unpublished: pure
fn new_doc: pure
fn html_name: pure
fn title_of: pure
fn section_title: pure
fn nav_label: pure
fn publish: DirWrite (site)
fn md_path: pure
fn md_url: pure
fn doc_page: pure
fn section_page: pure
fn url_of: pure
fn origin: pure
fn repository: pure
fn robots: pure
fn sitemap: pure
fn canonical: pure
fn latest_json: pure
fn llms_txt: pure
fn llms_group: pure
fn llms_full: pure
fn search_json: pure
fn json_string: pure
fn search_limit: pure
fn headings_of: pure
fn search_text: pure
fn prose: pure
fn summary_of: pure
fn shorten: pure
fn collapse: pure
fn plain_text: pure
fn csp: pure
fn fonts: pure
fn font_stylesheet: pure
fn layout: pure
fn about: pure
fn banner: pure
fn structured_data: pure
fn navigation: pure
fn nav_item: pure
fn markdown: pure
fn blocks: pure
fn starts_block: pure
fn is_fence: pure
fn fenced_code: pure
fn heading_level: pure
fn heading: pure
fn heading_tag: pure
fn slug: pure
fn block_quote: pure
fn table_starts: pure
fn table: pure
fn row: pure
fn cells: pure
fn list_marker: pure
fn list: pure
fn list_item: pure
fn paragraph: pure
fn retarget: pure
fn fence_flags: pure
fn retarget_line: pure
fn retarget_destination: pure
fn inline: pure
fn spans: pure
fn opens_emphasis: pure
fn find_closer: pure
fn run_length: pure
fn find_run: pure
fn matching: pure
fn destination: pure
fn link_to: pure
fn anchor_to: pure
fn picture: pure
fn safe_href: pure
fn url_characters: pure
fn has_scheme: pure
fn resolve: pure
fn published_url: pure
fn parent_of: pure
fn last_segment: pure
fn sub: pure
fn indent: pure
fn dedent: pure
fn min: pure
fn trim_one_space: pure
fn is_alphanumeric: pure
fn is_space: pure
fn is_punctuation: pure
fn text_of: pure
fn wrap: pure
fn empty: pure
fn markup: pure
fn has_catalog: pure
fn code_pages: pure
fn catalog: pure
fn doc_codes: pure
fn fence_tag: pure
fn is_code: pure
fn code_row: pure
fn with_examples: pure
fn code_page: pure
fn local_links: pure
fn chomp: pure
fn codes_index: pure
fn summary: pure
fn codes_json: pure
fn code_json: pure
fn json_or_null: pure
fn catalog_json_string: pure
fn asset_text: pure
fn has_asset: pure
fn has_setup: pure
fn carries_prompt: pure
fn first_section: pure
fn prompt_doc_page: pure
fn setup_block: pure
fn setup_listing: pure
fn setup_page: pure
fn authority_page: pure
fn setup_group: pure
fn publish_setup: DirWrite (site)
```
