Complete memory graph and document value workplans

This commit is contained in:
2026-05-15 13:30:50 +02:00
parent f49ebb563b
commit 6cc44da628
25 changed files with 1546 additions and 168 deletions

View File

@@ -78,6 +78,38 @@ Initial deterministic functions:
| `md.codeblock` | Create a fenced code block. |
| `data.get` | Read a value from processing context variables. |
## Typed Values
Document functions now expose typed result values in addition to their legacy
raw `output` field. Each `DocumentFunctionRun` includes a `value` object with a
stable `kind`, metadata, and optional provenance.
Supported value kinds:
| Kind | Markdown mapping |
| --- | --- |
| `string` | Inline or block text. |
| `number` | Decimal text. |
| `boolean` | `true` or `false`. |
| `none` | Empty text. |
| `markdown` | Markdown content passed through directly. |
| `list` | Comma-separated inline text or newline-separated block text. |
| `dictionary` | Stable JSON object text. |
| `record` | Stable JSON object text. |
| `table` | Deterministic Markdown table. |
| `reference` | Label/title/value text, with provenance required. |
| `content_unit` | Label/title/value text, with provenance required. |
| `unknown` | Diagnostic fallback for mismatched output values. |
| `dynamic` | Reserved for explicitly dynamic values. |
Function descriptors declare `output_type`; execution validates the returned
value against that declaration. Mismatches produce
`function.output_type_mismatch`, while reference-like values without provenance
produce `function.provenance_missing`.
The raw `output` field remains for compatibility. New callers should prefer
`value` for typed API use and use the mapper when Markdown output is needed.
## CLI
List functions:
@@ -132,18 +164,44 @@ capabilities before execution. External policy services may provide decisions
through adapters later, but deterministic function execution has no external
service dependency.
## Syntax Boundary
The supported syntax remains intentionally conservative:
- inline calls with `{{mkt:...}}`
- fenced calls with `mkt-function`
- positional and named arguments parsed with shell-like quoting
- pipeline chaining with quoted pipe characters preserved
- `${name}` context variable lookup
- bounded pipeline depth to avoid accidental runaway expressions
Deferred syntax:
- nested function expressions
- document-local function definitions
- conditionals, loops, lambdas, or general scripting
- Quarkdown syntax compatibility in the core parser
## Natural Extensions
The deterministic layer deliberately stops before becoming a full publishing
language. Future extension work is captured in
`MKTT-WP-0015: Render And Document Function Extensions`.
language. The original broad render/function follow-up has been split into
native workplans:
That workplan should consider:
- `MKTT-WP-0015`: typed document-function value contracts.
- `MKTT-WP-0020`: render/export adapter contracts.
- `MKTT-WP-0021`: render reference and asset manifest contracts.
- `MQD-WP-0001`: concrete Quarkdown adapter implementation in
`markitect-quarkdown`.
- `MKTF-WP-0003`: read-side source attachment metadata compatibility in
`markitect-filter`.
Those workplans should consider:
- typed document values and value-to-Markdown mapping
- richer multiline and nested function syntax
- document-local reusable functions
- render/export adapters, including optional Quarkdown source export
- constrained parser compatibility improvements, while deferring nested
function expressions and document-local reusable functions
- render/export adapter contracts, including optional Quarkdown source export
- render-aware numbering, references, tables, figures, equations, and code
blocks
- static asset and media manifests with checksums