AtlatestRepositoryfolio

folio / treepackage.sgl

1;;; sigil-folio - Markdown-native knowledge and project management via MCP
2;;;
3;;; A structured markdown convention paired with MCP tools for task management,
4;;; project tracking, and knowledge accumulation. All state stored as
5;;; human-readable, git-committable markdown files.
6
7(package
8 name: "folio"
9 version: "0.2.11"
10 sigil: "0.20"
11 description: "Markdown-native knowledge and project management via MCP"
12 url: "https://codeberg.org/sigil/folio"
13 license: "BSD-3-Clause"
14 authors: (list "David Wilson <david@daviwil.com>")
16 ;; `(folio entry)`, NOT `(folio main)`.
17 ;;
18 ;; The entry library's `main` dispatches on the FOLIO_DOC_WORKER environment
19 ;; marker: set, this binary runs the bounded parse worker; unset, it runs the
20 ;; MCP server. `src/folio/main.sgl` is untouched and still refuses subcommands
21 ;; -- mode selection happens before any argument is looked at, so no argument
22 ;; can become a mode. See `src/folio/entry.sgl`.
23 ;;
24 ;; Note `entry:` takes a FLAT library name and the runtime calls a procedure
25 ;; literally named `main` (hardcoded in both `sigil-run/src/main.c` and
26 ;; `cps-emit-native.c`). The `'((lib) proc)` form in the manifest docstring is
27 ;; stale -- it belongs to the inert `executables:` record, and passing it here
28 ;; raises, because the consumer does `(map symbol->string entry)`.
29 entry: '(folio entry)
30 bundle-name: "folio"
32 configs: (list
33 (config
34 name: 'dev
35 output-dir: "build/dev"
36 static?: #f
37 debug?: #t
38 optimize: 0
39 bundle?: #t)
40 (config
41 name: 'release
42 output-dir: "build/release"
43 backend: 'native
44 static?: #f
45 debug?: #f
46 optimize: 2
47 bundle?: #t))
49 dependencies: (list
50 ;; Explicit sigil-lib pin. Two independent reasons, both measured:
51 ;; 1. Without it, sigil-lib is derived transitively and does not track
52 ;; the `sigil:` field, so a relock can silently leave the C runtime
53 ;; behind while `sigil deps install` exits 0.
54 ;; 2. sigil-lib's resolution does NOT respect its declared range: with
55 ;; no explicit pin, a fresh resolve records `ref: "^0.17"` alongside
56 ;; `version: "0.18.2"` in the same lock entry, on any toolchain,
57 ;; while sigil-stdlib in that same resolve correctly stays at
58 ;; 0.17.20. Pinning explicitly is what makes the resolved runtime
59 ;; match what this manifest actually asks for.
60 ;; Verify in sigil.lock (the `version:`/`sha:` fields, not `ref:`).
61 (from-git url: "codeberg:sigil/sigil"
62 package: "sigil-lib" version: ">=0.20")
63 (from-git url: "codeberg:sigil/sigil" package: "sigil-run" version: ">=0.20")
64 (from-git url: "codeberg:sigil/sigil-json" version: "^0.16.0")
65 (from-git url: "codeberg:sigil/sigil-log" version: "^0.16.0")
66 ;; sigil-mcp ^0.17, NOT ^0.16. The 0.16 line now contains BOTH a release
67 ;; requiring the 0.18 runtime (v0.16.5) and one requiring 0.17 (v0.16.6,
68 ;; a deliberate compatibility revert), so ^0.16 no longer determines
69 ;; which runtime you need. folio runs on 0.18, and ^0.16 re-resolves to
70 ;; v0.16.6, whose `(sigil env)` import does not exist on 0.18 -- that
71 ;; builds clean and dies at startup. The 0.17 line is the unambiguous
72 ;; 0.18-runtime line.
73 (from-git url: "codeberg:sigil/sigil-mcp" version: "^0.17")
74 (from-git url: "codeberg:sigil/sigil-http" version: "^0.18.0")
75 (from-git url: "codeberg:sigil/sigil-sqlite" version: "^0.16.0")
76 (from-git url: "codeberg:sigil/sigil-yaml" version: "^0.9")
77 (from-git url: "codeberg:sigil/sigil-sxml" version: "^0.15.0")
78 (from-git url: "codeberg:sigil/sigil-markdown" version: "^0.9")
79 (from-git url: "codeberg:sigil/sigil-web-styles" version: "^0.2.0")
80 ;; `folio/doc` is a profile over `sigil/doc` (D1), so the folio semantic
81 ;; containers hold ordinary Sigil Doc block nodes and reuse its inline
82 ;; nodes -- including `url-link`, which is the node F1a waited for SD-P2
83 ;; to land.
84 ;;
85 ;; RESOLVED 2026-08-12 BY sigil-doc v0.1.3 (f83d8d8), recorded rather than
86 ;; deleted so a reader can tell a fixed caveat from a forgotten one. The
87 ;; caveat used to say that no RELEASED sigil-doc contained `url-link`, that
88 ;; v0.1.1 (42a0686) predated SD-P2, and that a green build here was
89 ;; therefore not evidence about any tag. All three have expired: v0.1.3 is
90 ;; the first release carrying BOTH `url-link` and SD-P7's section-child
91 ;; content profile, which is what `(folio doc reader)` delegates to.
92 ;;
93 ;; The RANGE and the redirect are deliberately unchanged. Whether folio
94 ;; should now pin `^0.1.3` and drop the dev redirect is a dependency
95 ;; decision for merge time, not a change to make underneath a phase that is
96 ;; mid-flight -- and until it is made, the build still resolves this through
97 ;; dev-redirects.sgl to ../sigil-doc, so a green build here remains evidence
98 ;; about a WORKING TREE rather than about a tag. `test/gate-f1b.sh` asserts
99 ;; the CAPABILITY it depends on (the profile constructors are exported)
100 ;; rather than any version, because a version is a proxy and the capability
101 ;; is the thing.
102 (from-git url: "codeberg:sigil/sigil-doc" version: "^0.1"))
104 dev-dependencies: (list
105 (from-git url: "codeberg:sigil/sigil" package: "sigil-test" version: ">=0.20")
106 (from-git url: "codeberg:sigil/sigil" package: "sigil-test-runner" version: ">=0.20"))
108 tasks: (list
109 (task
110 name: 'build
111 description: "Compile folio modules"
112 steps: (list
113 (compile-sigil-modules sources: "src/**/*.sgl"
114 output-dir: (config-output-subdir "lib"))))))