{"version":1,"pages":[{"id":"X6uF0el7YlUn50vN9UxA","title":"Overview","pathname":"/","siteSpaceId":"sitesp_lEkrO","icon":"brain-circuit","description":"Lynk is a semantic layer for AI — a brain organized by concept that teaches an agent how your business thinks."},{"id":"CSbKRLkkqhLfSYIKpaJk","title":"Overview","pathname":"/concepts/concepts","siteSpaceId":"sitesp_lEkrO","icon":"shapes","description":"The router — every page in these docs and what it answers. Ground vocabulary here, then read the narrowest page.","breadcrumbs":[{"label":"Concepts"}]},{"id":"tEvdPt4D8Hq3WwdICdaJ","title":"Project","pathname":"/concepts/project","siteSpaceId":"sitesp_lEkrO","icon":"box-archive","description":"A Lynk project is a self-contained git repository — one repo, one customer — consumed as versioned, validated builds.","breadcrumbs":[{"label":"Concepts"}]},{"id":"Oe2aEXdfvN0A9wVubb23","title":"lynk.yml","pathname":"/concepts/lynk-yml","siteSpaceId":"sitesp_lEkrO","icon":"gear","description":"The required project settings file at the .lynk/ root — schema_version, topology, and name.","breadcrumbs":[{"label":"Concepts"}]},{"id":"WBR1oNB9ncoh6BPVH4Vz","title":"LYNK.md","pathname":"/concepts/lynk-md","siteSpaceId":"sitesp_lEkrO","icon":"compass","description":"LYNK.md is the agent's orientation and identity — who the business is, who a team is, and how they think. Always loaded.","breadcrumbs":[{"label":"Concepts"}]},{"id":"Z8xiAMyqClCiRNIj8vpX","title":"GLOSSARY.yml","pathname":"/concepts/glossary","siteSpaceId":"sitesp_lEkrO","description":"GLOSSARY.yml is the team's vocabulary — the terms they use and what they mean, always loaded and merged across scopes.","breadcrumbs":[{"label":"Concepts"}]},{"id":"sKoO3Sm2pOZfFu5k0BIU","title":"Domain","pathname":"/concepts/domain","siteSpaceId":"sitesp_lEkrO","icon":"users","description":"A domain is an agent — one team's analytical surface, with its own vocabulary, entities, skills, and policies. A user talks to one at a time.","breadcrumbs":[{"label":"Concepts"}]},{"id":"C1FkHRrZm9tl6DTC68T7","title":"LYNK.md (domain)","pathname":"/concepts/domain/lynk-md","siteSpaceId":"sitesp_lEkrO","icon":"compass","description":"A domain's LYNK.md — who this team is. Appended to the root LYNK.md; extends it, never replaces it.","breadcrumbs":[{"label":"Concepts"},{"label":"Domain","icon":"users"}]},{"id":"42iZaqISWO7rSwQXWMHA","title":"GLOSSARY.yml (domain)","pathname":"/concepts/domain/glossary","siteSpaceId":"sitesp_lEkrO","description":"A domain's GLOSSARY.yml — the team's vocabulary, merged over the root glossary with the domain winning on a key collision.","breadcrumbs":[{"label":"Concepts"},{"label":"Domain","icon":"users"}]},{"id":"pfR2q6eC7E0ijK3bW97b","title":"Entity","pathname":"/concepts/entity","siteSpaceId":"sitesp_lEkrO","icon":"cube","description":"An entity is a lazy, encapsulated representation of a thing in the business — a folder holding an ENTITY.md prose file and a schema.yml definition.","breadcrumbs":[{"label":"Concepts"}]},{"id":"wWGghCdl3BJoWeAFDgNq","title":"ENTITY.md","pathname":"/concepts/entity/entity-md","siteSpaceId":"sitesp_lEkrO","icon":"file-lines","description":"ENTITY.md is the prose side of an entity — quirks, conventions, and business context the agent reads. Short by design, frontmatter required.","breadcrumbs":[{"label":"Concepts"},{"label":"Entity","icon":"cube"}]},{"id":"enBMr78FbafA03QjhPFs","title":"schema.yml","pathname":"/concepts/entity/schema-yml","siteSpaceId":"sitesp_lEkrO","icon":"file-code","description":"schema.yml is the structured definition of an entity — identity, keys, imports, features, metrics, and relationships.","breadcrumbs":[{"label":"Concepts"},{"label":"Entity","icon":"cube"}]},{"id":"tgVTkm95c7Fq1sRhre4q","title":"Identity and Imports","pathname":"/concepts/entity/schema-yml/identity-and-imports","siteSpaceId":"sitesp_lEkrO","icon":"fingerprint","description":"identity roots an entity in a warehouse table or view, or another entity; keys identify its rows; imports cherry-pick definitions from a parent entity.","breadcrumbs":[{"label":"Concepts"},{"label":"Entity","icon":"cube"},{"label":"schema.yml","icon":"file-code"}]},{"id":"QD8mjYgweXWU7CFQbpaG","title":"Feature","pathname":"/concepts/entity/schema-yml/feature","siteSpaceId":"sitesp_lEkrO","icon":"tag","description":"A feature is a queryable, row-grain attribute of an entity — a column, a derivation, or a value pulled across a relationship.","breadcrumbs":[{"label":"Concepts"},{"label":"Entity","icon":"cube"},{"label":"schema.yml","icon":"file-code"}]},{"id":"fhTGCFLgvNPFyD8E2SAY","title":"Metric","pathname":"/concepts/entity/schema-yml/metric","siteSpaceId":"sitesp_lEkrO","icon":"sigma","description":"A metric is an aggregation defined on the entity it aggregates — sum, count, average, conditional aggregates — invoked with metric().","breadcrumbs":[{"label":"Concepts"},{"label":"Entity","icon":"cube"},{"label":"schema.yml","icon":"file-code"}]},{"id":"Cj2nN9S5cbJo8WSuuF3o","title":"Relationships","pathname":"/concepts/entity/schema-yml/relationships","siteSpaceId":"sitesp_lEkrO","icon":"share-nodes","description":"Relationships declare a path from an entity to a physical table or another entity — directional, per-step joins with cardinality.","breadcrumbs":[{"label":"Concepts"},{"label":"Entity","icon":"cube"},{"label":"schema.yml","icon":"file-code"}]},{"id":"OTHWKqcOnD8wEBRpoH4j","title":"Policy","pathname":"/concepts/policy","siteSpaceId":"sitesp_lEkrO","icon":"scale-balanced","description":"Policies are eager, always-apply behavioral commitments — output format, clarification behavior, and other rules for how the agent operates.","breadcrumbs":[{"label":"Concepts"}]},{"id":"niSwa7kJKk7abcGNTjDm","title":"Skill","pathname":"/concepts/skill","siteSpaceId":"sitesp_lEkrO","description":"Skills are lazy prose procedures for classes of analytical reasoning — how the agent thinks through an analysis, not what exists in the data.","breadcrumbs":[{"label":"Concepts"}]},{"id":"DPivt4HxOnEagMX2C1GT","title":"Reference Files","pathname":"/concepts/reference-files","siteSpaceId":"sitesp_lEkrO","icon":"folder-open","description":"Reference files — user-organized files outside the domain primitives, the escape hatch for cross-cutting content, reached by absolute /.lynk/ references.","breadcrumbs":[{"label":"Concepts"}]},{"id":"yUNOi9wLfos3Yhl2RiD9","title":"Placing knowledge in a layer","pathname":"/guides/where-knowledge-goes","siteSpaceId":"sitesp_lEkrO","icon":"signs-post","description":"How to decide where a piece of knowledge belongs — entity prose, schema, glossary, metric, skill, policy, LYNK.md, or a reference file.","breadcrumbs":[{"label":"Guides"}]},{"id":"N0SkCtIdtIuvwxGSIUhI","title":"Choosing and shaping entities","pathname":"/guides/designing-entities","siteSpaceId":"sitesp_lEkrO","icon":"cubes","description":"How to decide what becomes an entity and how to shape it — the entity test, grain, promoting table relationships to entities, the upstream boundary, and base-row hygiene. Reach for it before adding or","breadcrumbs":[{"label":"Guides"}]},{"id":"AgAnkfAnbaeHutObjUTE","title":"Modeling metrics, time, and state","pathname":"/guides/metrics-time-and-state","siteSpaceId":"sitesp_lEkrO","icon":"timeline","description":"How to place a computation — feature, metric, skill, or glossary term — and how to model balances, time windows, cohorts, and ratio KPIs correctly.","breadcrumbs":[{"label":"Guides"}]},{"id":"30HRanKAHarYKYW66I7h","title":"Designing domains","pathname":"/guides/designing-domains","siteSpaceId":"sitesp_lEkrO","icon":"sitemap","description":"How to decide how many domains to create, what belongs in the shared domain, and when to promote, extend, split, or merge.","breadcrumbs":[{"label":"Guides"}]},{"id":"XnHyC8EYIGEr2IysFnxo","title":"Budgeting the agent's context","pathname":"/guides/context-engineering","siteSpaceId":"sitesp_lEkrO","icon":"gauge-high","description":"How to budget the agent's context — deciding @ injection vs a link, splitting a growing ENTITY.md, placing content at root vs domain, and when a rule earns a policy.","breadcrumbs":[{"label":"Guides"}]},{"id":"AiF1VaUfC082QJ0fK3KU","title":"Evolving a live layer","pathname":"/guides/evolving-the-layer","siteSpaceId":"sitesp_lEkrO","icon":"timeline","description":"How to change a live semantic layer — logging definition changes, renaming a shared feature or metric safely, deprecating with enabled false, and landing breaking changes across domains.","breadcrumbs":[{"label":"Guides"}]},{"id":"KjPxiIWc8BSQv9mIyqoU","title":"Reading a complete layer","pathname":"/guides/complete-example","siteSpaceId":"sitesp_lEkrO","icon":"layer-group","description":"A complete, annotated .lynk/ project for Grove (B2B SaaS) — every file of a small correct layer, end to end, with the reasoning behind each choice. Read when you want the whole shape at once instead o","breadcrumbs":[{"label":"Guides"}]},{"id":"jGq5QVcSc0GPE15sXrDH","title":"Layout and Naming","pathname":"/reference/layout-and-naming","siteSpaceId":"sitesp_lEkrO","icon":"folder-tree","description":"The .lynk/ directory tree, the rules for naming folders and files, and the settings that control how a project is built.","breadcrumbs":[{"label":"Reference"}]},{"id":"NDiYQx2KsQb5avZsx2y0","title":"Markdown Format","pathname":"/reference/markdown-format","siteSpaceId":"sitesp_lEkrO","icon":"markdown","description":"The frontmatter contract shared by every Markdown primitive, the reference grammar (@ injection, markdown links, bare paths), and how supporting files are organized.","breadcrumbs":[{"label":"Reference"}]},{"id":"SChpypqfmpV8ikVlHrqd","title":"SQL Expressions","pathname":"/reference/sql-expressions","siteSpaceId":"sitesp_lEkrO","icon":"brackets-curly","description":"The reference grammar inside schema.yml sql fields — segment-count path resolution, the metric/first/last functions, filters, and join binding.","breadcrumbs":[{"label":"Reference"}]},{"id":"0cu5a9H3hMf7Z9feNCbT","title":"What Lynk doesn't do","pathname":"/reference/what-lynk-does-not-do","siteSpaceId":"sitesp_lEkrO","icon":"ban","description":"The boundaries in one place — testing and evaluations, metric parameterization, templating, tags, scheduling, cross-domain queries — what Lynk doesn't do by design, what's planned, and what belongs up","breadcrumbs":[{"label":"Reference"}]},{"id":"QiU66OxrIqou30lrRqkf","title":"API Reference","pathname":"/api-reference/api","siteSpaceId":"sitesp_lEkrO","icon":"plug","description":"The programmatic interfaces — the Lynk SQL query dialect and the REST endpoints for validation and catalog inspection.","breadcrumbs":[{"label":"API Reference"}]},{"id":"DkE0ymt0S9X5edcGd1JX","title":"Lynk SQL","pathname":"/api-reference/api/lynk-sql","siteSpaceId":"sitesp_lEkrO","icon":"database","description":"The query dialect — warehouse SQL plus metric(<entity>.<name>) and USING('<join_name>'); entity references, joins, CTEs, windows, supported statements, pitfalls.","breadcrumbs":[{"label":"API Reference"},{"label":"API Reference","icon":"plug"}]},{"id":"fY97qEsk4qeVh1811sBk","title":"REST API","pathname":"/api-reference/api/rest-api","siteSpaceId":"sitesp_lEkrO","icon":"globe","description":"HTTP endpoints for validating the semantic layer and inspecting the data catalog — full documentation in progress.","breadcrumbs":[{"label":"API Reference"},{"label":"API Reference","icon":"plug"}]}]}