diff options
| author | Ralph Amissah <ralph.amissah@gmail.com> | 2026-09-11 10:23:25 -0400 |
|---|---|---|
| committer | Ralph Amissah <ralph.amissah@gmail.com> | 2026-09-12 12:14:39 -0400 |
| commit | b6b2ff06054edb20c880aff26b8b02d8f093fcc2 (patch) | |
| tree | 6cc5abb9323808e28227a1791a8717ef4e00485f /test/reference/abstraction/live-manual.en.ssp | |
| parent | ocda: .ssp should have all sections of abstraction (diff) | |
ocda: the abstraction carries the document metadata output reads
.ssp format v0.1 -> v1.1, and the .ocda.db with it: they are two
serialisations of one format and now move together.
The gap this closes, measured against the writers' read set: of the 59
conf_make_meta fields outputs/io_out/ reads, 29 were in neither
artefact. Five are conf.* and stay out, being site and run scoped (urls,
papersize, the search db filename): the same abstraction published to
two sites must take each site's. Of the rest, three are never assigned
anywhere (title_short, publisher, original_publisher; read only by
sqlite.d, always empty) and one is a copy of a field already carried
(title_sub = title_subtitle), so 17 properties actually had to travel
and now do:
make breaks, footer, home_button_text
meta title.edition, date.added_to_site, language.document_char,
original.{title,source,language,language_char},
rights.copyright_{text,translation,illustrations,
photographs,cover,audio,video}
make splits by when it acts, which is worth keeping in mind: these three
are read in outputs/io_out/ and must travel, while italics, bold,
emphasis, substitute and headings are read at parse time and their
effect is already in the objects.
New @source block, and source.* rows in the database, so a reader can
say which markup an abstraction came from rather than working from
stale content in silence:
language the document's own
languages the pod's list, which is what the inter-language links
in html need and neither artefact carried
digest sha256 of the .sst; equals its digests.txt entry
The database adds source.ssp_digest, the sha256 of the .ssp it was built
from, since a file cannot hold its own hash. So the chain
.sst -> .ssp -> .ocda.db is checkable end to end.
The database's metadata table is now filled from the header blocks the
.ssp gives back, not from a second list read off doc_matters. One list,
in ssp.d: a property added there arrives in the database with nothing
else changed, and one that is not in the .ssp cannot be in the database
at all. That was the last place the two could drift; the objects stopped
being able to on 2026-09-07.
Version is checked on load. The major part must match, a newer minor is
accepted (a minor bump only adds properties, and an unknown property
line is ignored). A v0.1 artefact is now refused with a message saying
to regenerate it, rather than loading half populated.
test-abstraction-db.sh now compares the two artefacts' header blocks
property by property, 36 per document on the wealth of networks, where
it previously only checked that a schema.version row existed. Verified
non-vacuous: dropping one property is reported.
Reference regenerated, and the whole diff is this change and nothing
else: 320 lines added, 35 removed over 35 files, being 35 format lines
changed, 35 @source blocks (4 lines each), 35 language.document_char, 35
home_button_text (it has a default), 18 breaks, 16 footer,
4 date.added_to_site, 1 title.edition, 1 original.source.
Existing outputs unaffected.
(assisted by Claude-Code)
Diffstat (limited to 'test/reference/abstraction/live-manual.en.ssp')
| -rw-r--r-- | test/reference/abstraction/live-manual.en.ssp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/test/reference/abstraction/live-manual.en.ssp b/test/reference/abstraction/live-manual.en.ssp index 771d352..631f01f 100644 --- a/test/reference/abstraction/live-manual.en.ssp +++ b/test/reference/abstraction/live-manual.en.ssp @@ -1,6 +1,12 @@ -% SiSU Document Abstraction v0.1 +% SiSU Document Abstraction v1.1 % Source: live-manual.ssm +@source { + language: en + languages: en ca de es fr it ja pl ro + digest: 5A7382F1D8029DAAE5F621B92E3C7210664585B43CAA4C327FDB5807AC2EBBEC +} + @meta { title.main: Live Systems Manual title.full: Live Systems Manual @@ -11,12 +17,14 @@ rights.copyright: 2006-2015 Live Systems Project rights.license: This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. ┙ ┙ This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ┙ ┙ You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/. ┙ ┙ The complete text of the GNU General Public License can be found in /usr/share/common-licenses/GPL-3 file. classify.topic_register: SiSU markup sample:technical writing;software:program + language.document_char: en } @make { doc_type: book auto_num_top_lv: 9 auto_num_depth: 2 + home_button_text: ┥sisudoc.org┝┤https://sisudoc.org├ ┥doc-reform.org┝┤https://doc-reform.org├ ┥sources / git┝┤https://git.sisudoc.org/projects├ } @doc_has { |
