unaltraweb 0.7.1 → 0.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Makefile +26 -4
- data/docs/_documentation/en/40-distribution.md +33 -10
- data/docs/_documentation/en/43-workspace-path-policies.md +13 -0
- data/docs/_documentation/en/47-private-practice-pdfs.md +130 -0
- data/docs/agents/consolidation-0.7.2.md +97 -0
- data/docs/agents/d0-runtime-identity.md +8 -0
- data/docs/agents/deployment-integration-0.7.1.md +4 -0
- data/docs/agents/manual-authoring-components.md +23 -0
- data/docs/agents/mcp-contract.md +109 -4
- data/docs/agents/owner-closeout-93.md +185 -0
- data/docs/agents/practice-editions-98.md +816 -0
- data/docs/agents/practice-pdf-installable-98.md +250 -0
- data/docs/agents/practice-runtime-archives-98.md +147 -0
- data/docs/agents/private-practice-verifier-98.md +296 -0
- data/docs/agents/qgis-0.6.1-adoption-109.md +110 -0
- data/docs/agents/source-ci-98.md +148 -0
- data/scripts/check_practice_verifier_runtime.py +69 -0
- data/scripts/export_practice_runtime_archives.py +138 -0
- data/scripts/manual/filters/practice-finish.lua +36 -0
- data/scripts/manual/filters/practice-layout.lua +84 -0
- data/scripts/manual/practice_pdf.py +31 -0
- data/scripts/manual/render_practice.py +125 -0
- data/scripts/manual/templates/practice.tex +95 -0
- data/scripts/prepare_practice_candidate.py +159 -0
- data/scripts/prepare_practice_editions_candidate.py +119 -0
- data/scripts/test_wheel_install.py +20 -0
- data/scripts/unaltraweb-mcp-bootstrap.sh +1 -1
- data/scripts/validate_distribution.py +18 -1
- data/src/unaltraweb_mcp/component-contract.json +28 -17
- data/src/unaltraweb_mcp/editorial_sources.py +62 -4
- metadata +20 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c5280a9154aff314292e2929ee157d6a2ebc7b2ab2b292cf9f7d995f3f147922
|
|
4
|
+
data.tar.gz: ad96a399ed437469d747634a7b5d69aa2958794e5f38395511b811ca99befd40
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: bfe3e85558161e19ae69988d40d78179a18ea418d6d932597dfeadb82bbfbfaab5d9d3c8847b0b6245f05ef26bd732dd548dc459e46f674556f10ffa1d977bd1
|
|
7
|
+
data.tar.gz: 6d1fc3cb0ba53b7c6e780bc43f7a93c2c1ca55b3ffa9bab9da773d20f9c56410dedd12f49cb9cfd6e2c529088b76c79a74bf94dbd30abb1dd2982a45ee4866a1
|
data/Makefile
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
PYTHON ?= python3
|
|
2
2
|
override PROJECT := $${MCP_CONSUMER_WORKSPACE:?MCP_CONSUMER_WORKSPACE is required}
|
|
3
3
|
override PROJECT_ROOT := $(PROJECT)
|
|
4
|
-
MCP_RUNTIME_IMAGE ?= ghcr.io/dosquartsdedocs/unaltraweb:0.7.
|
|
5
|
-
MCP_IMAGE ?= ghcr.io/dosquartsdedocs/unaltraweb-mcp:0.7.
|
|
6
|
-
MCP_RELEASE_IMAGE ?= ghcr.io/dosquartsdedocs/unaltraweb-mcp@sha256:
|
|
4
|
+
MCP_RUNTIME_IMAGE ?= ghcr.io/dosquartsdedocs/unaltraweb:0.7.3
|
|
5
|
+
MCP_IMAGE ?= ghcr.io/dosquartsdedocs/unaltraweb-mcp:0.7.3
|
|
6
|
+
MCP_RELEASE_IMAGE ?= ghcr.io/dosquartsdedocs/unaltraweb-mcp@sha256:6aa20cff86c3891a876e37ba0548fa36f3c5633c9f22ba672e9f50123d677cf6
|
|
7
7
|
MCP_DOCKER_BUILD_NETWORK ?= default
|
|
8
8
|
INIT_SITE_PROFILE ?= unaltreselfie
|
|
9
9
|
NEW_WEB_PROFILE ?= unaltreselfie
|
|
@@ -40,7 +40,7 @@ WEB_CAPTURE_IMAGE ?= ghcr.io/dosquartsdedocs/unaltraweb-web-capture@sha256:0bf1b
|
|
|
40
40
|
WEB_CAPTURE_DEV_IMAGE ?= unaltraweb-web-capture:dev
|
|
41
41
|
WEB_CAPTURE_DOCKER_BUILD_NETWORK ?= default
|
|
42
42
|
VEGAVISUALS_CLI ?=
|
|
43
|
-
DOCKER_IMAGE ?= ghcr.io/dosquartsdedocs/unaltraweb:0.7.
|
|
43
|
+
DOCKER_IMAGE ?= ghcr.io/dosquartsdedocs/unaltraweb:0.7.3
|
|
44
44
|
MANUAL_PDF_IMAGE ?= ghcr.io/dosquartsdedocs/unaltraweb-manual-pdf@sha256:1bb3f2dafd741e96c28639ec1cc8ccaeb81cbaa73e649f787c0b4ef59997bd4b
|
|
45
45
|
MANUAL_PDF_DEV_IMAGE ?= unaltraweb-manual-pdf:dev
|
|
46
46
|
MCP_SMOKE_MANUAL_PDF_IMAGE ?= $(MANUAL_PDF_IMAGE)
|
|
@@ -48,6 +48,18 @@ MCP_SMOKE_PROJECT ?=
|
|
|
48
48
|
override MCP_SMOKE_PROJECT := $(value MCP_SMOKE_PROJECT)
|
|
49
49
|
export MCP_SMOKE_PROJECT
|
|
50
50
|
MANUAL_PDF_LANG ?=
|
|
51
|
+
PRACTICE_SOURCE ?=
|
|
52
|
+
PRACTICE_VERSION ?=
|
|
53
|
+
PRACTICE_RUN ?=
|
|
54
|
+
PRACTICE_DRY_RUN ?= 0
|
|
55
|
+
override PRACTICE_SOURCE := $(value PRACTICE_SOURCE)
|
|
56
|
+
override PRACTICE_VERSION := $(value PRACTICE_VERSION)
|
|
57
|
+
override PRACTICE_RUN := $(value PRACTICE_RUN)
|
|
58
|
+
override PRACTICE_DRY_RUN := $(value PRACTICE_DRY_RUN)
|
|
59
|
+
export PRACTICE_SOURCE PRACTICE_VERSION PRACTICE_RUN PRACTICE_DRY_RUN
|
|
60
|
+
PRACTICE_EDITION_CONFIG ?=
|
|
61
|
+
override PRACTICE_EDITION_CONFIG := $(value PRACTICE_EDITION_CONFIG)
|
|
62
|
+
export PRACTICE_EDITION_CONFIG
|
|
51
63
|
MANUAL_PDF_PUBLISH_DRY_RUN ?= 1
|
|
52
64
|
MANUAL_PDF_CONFIRM_PUBLISH ?= 0
|
|
53
65
|
MANUAL_PDF_PUBLICATION_INTENT_SHA256 ?=
|
|
@@ -97,6 +109,8 @@ SCIMAGO_ARGS += --input "$(SCIMAGO_INPUT)"
|
|
|
97
109
|
endif
|
|
98
110
|
|
|
99
111
|
.PHONY: distribution-check distribution-release-check distribution-doctor workflow-check wheel-check gem-check reproducible-site-check docs-build docs-serve docs-publish docs-down metrics-scimago-fetch metrics-update metrics-update-all metrics-check manual-pdf-image manual-pdf-image-dev manual-pdf-preflight manual-pdf-status manual-pdf-check manual-pdf-build manual-pdf-publish manual-pdf-publish-worker manual-pdf-sync manual-release-status manual-release-check manual-release-prepare manual-compute-status manual-compute-check manual-compute-render manual-compute-render-figures manual-compute-image-python manual-compute-image-r manual-compute-images manual-compute-rstudio compute-base-image-python compute-base-image-r web-capture-status web-capture-check web-capture-render web-capture-image visualization-status visualization-check visualization-render
|
|
112
|
+
.PHONY: manual-practice-pdf-build
|
|
113
|
+
.PHONY: manual-practice-compose
|
|
100
114
|
.PHONY: mcp-runtime-image mcp-image mcp-build mcp-check mcp-smoke mcp-smoke-prebuilt mcp-stdio mcp-down mcp-down-all mcp-list-tools mcp-starter-templates mcp-new-web mcp-initialize-site mcp-site-context mcp-profile-check mcp-manual-source-quality-check mcp-manual-editorial-quality-check mcp-manual-authoring-capabilities mcp-manual-computation-status mcp-manual-computation-check mcp-manual-computation-render mcp-manual-computation-render-figures mcp-web-capture-status mcp-web-capture-check mcp-web-capture-render mcp-manual-pdf-status mcp-manual-pdf-build mcp-manual-pdf-preview-prepare mcp-manual-pdf-preview-clean mcp-manual-pdf-publish mcp-manual-release-status mcp-manual-release-check mcp-manual-release-prepare mcp-profile-prune-plan mcp-profile-prune mcp-content-inventory mcp-language-policy mcp-content-approval-inventory mcp-translation-plan mcp-bibliography-inventory mcp-bibliometrics-check mcp-build-health
|
|
101
115
|
|
|
102
116
|
REPOSITORY_CONTEXT_TARGETS := distribution-doctor manual-compute-status manual-compute-check manual-compute-render manual-compute-render-figures manual-compute-image-python manual-compute-image-r manual-compute-images manual-compute-rstudio web-capture-status web-capture-check web-capture-render visualization-status visualization-check visualization-render manual-pdf-preflight manual-pdf-status manual-pdf-check manual-pdf-build manual-pdf-publish manual-pdf-sync manual-release-status manual-release-check manual-release-prepare metrics-scimago-fetch metrics-update metrics-update-all metrics-check
|
|
@@ -230,6 +244,14 @@ mcp-manual-pdf-status: ## Inspect manual PDF state for PROJECT
|
|
|
230
244
|
mcp-manual-pdf-build: ## Build the manual PDF for PROJECT
|
|
231
245
|
@PYTHONPATH="$(CURDIR)/src" $(PYTHON) -m unaltraweb_mcp.cli --project "$(PROJECT)" mcp manual-pdf-build --language "$(MANUAL_PDF_LANG)"
|
|
232
246
|
|
|
247
|
+
manual-practice-compose: export MANUAL_PDF_IMAGE := $(value MANUAL_PDF_IMAGE)
|
|
248
|
+
manual-practice-compose: ## Compose private recipient ZIPs from a consumer edition configuration
|
|
249
|
+
@PYTHONPATH="$(CURDIR)/src" python3 -m unaltraweb_mcp.cli mcp manual-practice-compose --config "$${PRACTICE_EDITION_CONFIG}" $(if $(filter 1 true TRUE yes YES,$(PRACTICE_DRY_RUN)),--dry-run,)
|
|
250
|
+
|
|
251
|
+
manual-practice-pdf-build: export MANUAL_PDF_IMAGE := $(value MANUAL_PDF_IMAGE)
|
|
252
|
+
manual-practice-pdf-build: ## Build one private practice reading in a retained sandbox job
|
|
253
|
+
@PYTHONPATH="$(CURDIR)/src" $(PYTHON) "$(CURDIR)/scripts/manual/practice_pdf.py" --project "$(PROJECT)"
|
|
254
|
+
|
|
233
255
|
mcp-manual-pdf-preview-prepare: ## Stage ignored PDF and cover copies for local Jekyll review
|
|
234
256
|
@PYTHONPATH="$(CURDIR)/src" $(PYTHON) -m unaltraweb_mcp.cli --project "$(PROJECT)" mcp manual-pdf-preview-prepare
|
|
235
257
|
|
|
@@ -25,7 +25,30 @@ The template is the better place to validate gem consumption, centralized styles
|
|
|
25
25
|
|
|
26
26
|
## Component Contract
|
|
27
27
|
|
|
28
|
-
### Published 0.7.
|
|
28
|
+
### Published 0.7.1 release
|
|
29
|
+
|
|
30
|
+
[**0.7.1**](https://github.com/dosquartsdedocs/unaltraweb/releases/tag/v0.7.1)
|
|
31
|
+
consolidates deployment compatibility into the package contract. Core and workflow
|
|
32
|
+
pins are independent; the workflow reads its own revision's approved PDF producer
|
|
33
|
+
records. CI exercises the caller generated by the package and checks that the
|
|
34
|
+
selected core, controller and PDF agree on retained-document verifier bytes.
|
|
35
|
+
|
|
36
|
+
The reviewed issue-86 one-line caller fix can migrate through the normal atomic
|
|
37
|
+
scaffold update plan when its exact baseline and current hashes match. Additional
|
|
38
|
+
author edits retain conflict review. Final installed-byte tests cover fresh and
|
|
39
|
+
upgraded manuals, Carta relocation/PDF, live lifecycle and populated Bundler state.
|
|
40
|
+
|
|
41
|
+
Artifact source: `ae5dab1d99804e7f73da82930199c1e2f3c08f61`.
|
|
42
|
+
Core/workflow selection: `3332e0b93933f12317e05f1ce8d38ce80046feab`.
|
|
43
|
+
Checkout MCP pin:
|
|
44
|
+
`sha256:6aa20cff86c3891a876e37ba0548fa36f3c5633c9f22ba672e9f50123d677cf6`.
|
|
45
|
+
The selected PDF 0.7.1 is
|
|
46
|
+
`sha256:1bb3f2dafd741e96c28639ec1cc8ccaeb81cbaa73e649f787c0b4ef59997bd4b`.
|
|
47
|
+
Public downloads match the receipt. The
|
|
48
|
+
[delivery report](https://github.com/dosquartsdedocs/unaltraweb/blob/main/docs/agents/owner-closeout-93.md)
|
|
49
|
+
records the source/signing/publication chain and consumer acceptance scope.
|
|
50
|
+
|
|
51
|
+
### Previous 0.7.0 release
|
|
29
52
|
|
|
30
53
|
[**0.7.0**](https://github.com/dosquartsdedocs/unaltraweb/releases/tag/v0.7.0)
|
|
31
54
|
adds [live instance identity and session-scoped
|
|
@@ -42,7 +65,7 @@ helper selection.
|
|
|
42
65
|
Gem, wheel, base runtime and MCP were produced from
|
|
43
66
|
`b44818c67eecef159f7aa0f825b0416cd511bc43`; receipt integration and tag target
|
|
44
67
|
`9fc84ac7fd01c78c6fe15fe862beb6a5d1633a9e` bind the same-source candidates.
|
|
45
|
-
|
|
68
|
+
That release's post-release checkout launcher selected
|
|
46
69
|
`sha256:b84cdb404ba7bab5ff0b14fa8a7ee93d7293e829cf32e28ff0dacaa8afff4677`.
|
|
47
70
|
Signed-byte D0 acceptance, the retained-letter relocation/rebuild and all four
|
|
48
71
|
populated Bundler roundtrips passed. Public downloads match the receipt.
|
|
@@ -121,25 +144,25 @@ candidate, receipt, tag and package evidence.
|
|
|
121
144
|
|
|
122
145
|
The BOM is an interoperability contract, not a bundle. The wheel contains its Python control/inspection modules, schema/BOM, clean package-owned scaffolds and a small host Docker launcher, described below. It does not include Ruby theme assets, Docker image layers, the factory's build/worker implementations, TeX, Chromium, computation environments, `diavisuals`, or `vegavisuals`.
|
|
123
146
|
|
|
124
|
-
The selected public core release is `0.7.
|
|
147
|
+
The selected public core release is `0.7.1`; earlier distributions remain immutable. Its BOM selects the verified PDF 0.7.1 specialization, reuses immutable compute and web-capture worker digests and selects published `diavisuals v0.5.0` and `vegavisuals v0.5.1` through SHA-256-pinned wheel URLs. Companion references can describe either a provider/release-matching Git reference or a provider/release/version-matching wheel with its content hash. The wheel boundary remains external. The scaffold's Vega revision is the published `a448cc50a5f511743a6fcfc213baeb9be80f4a27` commit. `distribution-check` validates structural integrity for normal CI. `distribution-release-check` blocks coordinated publication while any component is `pending` or `unavailable`; reviewed source authorized to produce final same-commit candidates is `ready`, while an already-published component is `released`. Final receipt values remain immutable after publication.
|
|
125
148
|
|
|
126
149
|
## Docker-First Hybrid Policy
|
|
127
150
|
|
|
128
|
-
### 0.7.
|
|
151
|
+
### 0.7.1 component selection
|
|
129
152
|
|
|
130
|
-
The coordinated core identity is **0.7.
|
|
153
|
+
The coordinated core identity is **0.7.1**: gem, wheel, base runtime and MCP
|
|
131
154
|
images were published together. The installed host launcher and runtime-aware
|
|
132
155
|
generated Bundler state are included. The PDF worker uses its reviewed, signed
|
|
133
|
-
0.
|
|
156
|
+
0.7.1 digest, alongside the 0.4.0 computation/capture workers and the accepted
|
|
134
157
|
Diavisuals 0.5.0 / Vega 0.5.1 rendering combination. A released PDF can be reused
|
|
135
158
|
only by full digest; new/pending workers still require the coordinated version.
|
|
136
|
-
Earlier receipts remain unchanged. Signed image/package evidence is recorded in the 0.7.
|
|
159
|
+
Earlier receipts remain unchanged. Signed image/package evidence is recorded in the 0.7.1 receipt;
|
|
137
160
|
promotion and anonymous-download checks passed before the post-release launcher
|
|
138
161
|
pin was advanced.
|
|
139
162
|
|
|
140
163
|
### Local delivery
|
|
141
164
|
|
|
142
|
-
GHCR is the canonical delivery channel for normal local use. The released package scaffold selects `ghcr.io/dosquartsdedocs/unaltraweb-mcp:0.7.
|
|
165
|
+
GHCR is the canonical delivery channel for normal local use. The released package scaffold selects `ghcr.io/dosquartsdedocs/unaltraweb-mcp:0.7.1`; existing sites can remain on their immutable previous release until deliberately updated. Its `make build`, `make serve` and `make test` targets mount the thin child site and run inside that image. The image contains both the installed Python control plane and the reviewed factory source at `/opt/unaltraweb`, so those targets load the theme as a path gem without downloading PyPI or RubyGems packages.
|
|
143
166
|
|
|
144
167
|
Factory registration uses a stricter pin. gContExt runs `mcp-build`, which inspects or pulls the full `MCP_RELEASE_IMAGE` digest, and `mcp-stdio` launches that exact image. Checkout builds use local `:dev` names by default through `mcp-image`, `mcp-check` and `mcp-smoke`, so they do not shadow public semver references unless a maintainer explicitly overrides them. The digest is advanced in a separate post-release change after each new receipt exists; candidate source continues to select the last completed release instead of attempting to embed an unknown self-digest.
|
|
145
168
|
|
|
@@ -169,7 +192,7 @@ unaltraweb-mcp-docker serve --project /absolute/consumer
|
|
|
169
192
|
```
|
|
170
193
|
|
|
171
194
|
The installed default selects its package's full MCP release image, currently
|
|
172
|
-
`ghcr.io/dosquartsdedocs/unaltraweb-mcp:0.7.
|
|
195
|
+
`ghcr.io/dosquartsdedocs/unaltraweb-mcp:0.7.1`. It resolves that selection to the
|
|
173
196
|
local immutable image ID before executing. The checkout's `MCP_RELEASE_IMAGE`
|
|
174
197
|
is a separate digest pin advanced only after publication; it is not the installed
|
|
175
198
|
wheel's default. This avoids sending a new package back to an older MCP while
|
|
@@ -314,7 +337,7 @@ For that reason:
|
|
|
314
337
|
|
|
315
338
|
## Docker Runtime
|
|
316
339
|
|
|
317
|
-
Release `0.7.
|
|
340
|
+
Release `0.7.1` publishes the selected base/MCP runtime and packages while pinning the verified PDF worker and reusing unchanged specialized workers. Local maintainers continue to use explicit development names such as `unaltraweb:dev`; generated sites select the reviewed semver MCP image rather than `main` or `latest`.
|
|
318
341
|
|
|
319
342
|
The base runtime owns Ruby, Jekyll and system dependencies. The MCP image builds on its exact candidate digest and adds the full reviewed factory plus the Python package. Specialized workers remain separate. This keeps each layer focused without adding Chromium, TeX or computation stacks to every site; the coordinated core-image workflow still rebuilds and verifies runtime, MCP and manual PDF candidates together.
|
|
320
343
|
|
|
@@ -43,6 +43,9 @@ which is not evidence that a future Git repository is compliant.
|
|
|
43
43
|
| --- | --- | --- | --- | --- |
|
|
44
44
|
| `_site` | directory | jekyll-build-output | ignored | disposable |
|
|
45
45
|
| `tmp` | directory | build-staging-and-local-release-evidence | ignored | explicit |
|
|
46
|
+
| `practiques` | directory | private-practice-sources | versioned | never |
|
|
47
|
+
| `sandbox/practiques` | directory | retained-private-practice-jobs | ignored | explicit |
|
|
48
|
+
| `dist/practiques` | directory | private-practice-deliveries | ignored | explicit |
|
|
46
49
|
| `.cache/scimago` | directory | external-bibliometrics-input-cache | ignored | explicit |
|
|
47
50
|
| `.cache/unaltraweb/manual-pdf-publication-intent.json` | file | pdf-publication-recovery-intent | ignored | explicit |
|
|
48
51
|
| `.cache/unaltraweb/manual-pdf-publication.json` | file | pdf-publication-provenance | ignored | explicit |
|
|
@@ -84,6 +87,16 @@ identity; it is generated metadata, not a disposable execution lock. Consumers
|
|
|
84
87
|
usually version it with generated Markdown/figures, but this rollout does not
|
|
85
88
|
force that choice.
|
|
86
89
|
|
|
90
|
+
Practice source control and web exclusion are separate checks. A manual using
|
|
91
|
+
`practiques/` must exclude `practiques/`, `sandbox/` and `dist/` from Jekyll;
|
|
92
|
+
`profile_check` rejects missing exclusions and conflicting explicit includes.
|
|
93
|
+
New manual scaffolds provide these exclusions. Existing sites retain their
|
|
94
|
+
configuration during scaffold synchronization, so review this small configuration
|
|
95
|
+
addition in the consumer workspace. The shared ignore template covers
|
|
96
|
+
`sandbox/` and `dist/practiques/`; local conflicts still stop synchronization.
|
|
97
|
+
Retained practice jobs and deliveries require explicit preservation decisions,
|
|
98
|
+
even when they can be regenerated.
|
|
99
|
+
|
|
87
100
|
## PDF Recovery Is Not Disposable Cache
|
|
88
101
|
|
|
89
102
|
`src/unaltraweb_mcp/manual_pdf_preview.py` owns the five fixed PDF-state paths:
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Private Practice PDFs
|
|
3
|
+
description: Build landscape practice readings with shared manual typography, course metadata and retained private outputs.
|
|
4
|
+
lang: en
|
|
5
|
+
ref: private_practice_pdfs
|
|
6
|
+
profiles:
|
|
7
|
+
- unaltredocs
|
|
8
|
+
documentation_profiles:
|
|
9
|
+
- core-developers
|
|
10
|
+
section: Core Development
|
|
11
|
+
weight: 665
|
|
12
|
+
permalink: "/private-practice-pdfs/"
|
|
13
|
+
nav_title: Practice PDFs
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
The `manual_practice_pdf_build` tool creates a private A4-landscape reading from
|
|
17
|
+
one Markdown source. It uses the manual's typography and site metadata, including
|
|
18
|
+
the course name, degree, instructors and configured logos. The first page includes
|
|
19
|
+
the course codes in parentheses beside the subject and the practice version.
|
|
20
|
+
The academic year is omitted. Logos appear only on the first page.
|
|
21
|
+
|
|
22
|
+
## Prepare a reading
|
|
23
|
+
|
|
24
|
+
Keep editable sources in the manual repository:
|
|
25
|
+
|
|
26
|
+
```text
|
|
27
|
+
practiques/accessibility/ca/alumnat/LLEGIU-ME.md
|
|
28
|
+
practiques/accessibility/ca/docent/LLEGIU-ME.md
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Use `LEEME.md` for Spanish and `README.md` for English. The language must be
|
|
32
|
+
enabled in the site configuration. `alumnat` and `docent` identify separate
|
|
33
|
+
readings; the tool does not infer or produce a teacher solution.
|
|
34
|
+
|
|
35
|
+
```markdown
|
|
36
|
+
---
|
|
37
|
+
title: Compare two routes
|
|
38
|
+
lang: en
|
|
39
|
+
content_status: draft
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
# Open the project
|
|
43
|
+
|
|
44
|
+
1. Open the prepared project.
|
|
45
|
+
2. Compare the routes between the same origin and destination.
|
|
46
|
+
|
|
47
|
+

|
|
48
|
+
|
|
49
|
+
| Scenario | Crossing |
|
|
50
|
+
| --- | --- |
|
|
51
|
+
| Open | Available |
|
|
52
|
+
| Closed | Unavailable |
|
|
53
|
+
|
|
54
|
+
Table: Conditions used in each scenario.
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
The initial reading format supports ordinary Pandoc Markdown, links, maths,
|
|
58
|
+
fenced code, captioned tables and standalone PNG, JPEG or PDF images. Image paths
|
|
59
|
+
are project-relative, with a fallback to the source directory. Absolute paths,
|
|
60
|
+
parent traversal, symlinks and remote images are rejected. Render other visual
|
|
61
|
+
formats through their owning provider and select a printable output first.
|
|
62
|
+
Liquid, manual-only component wrappers and automatic bibliography assembly are
|
|
63
|
+
not part of this standalone reading format.
|
|
64
|
+
|
|
65
|
+
Figures keep their original proportions and fit the usable page automatically.
|
|
66
|
+
Their captions are measured before allocating image height. A complete figure
|
|
67
|
+
moves to the next page when it cannot fit; it is not reduced to fill a small
|
|
68
|
+
space at the bottom. Tables are centred, with repeated headers and captions on
|
|
69
|
+
continued pages. Review long tables and dense screenshots at the intended size.
|
|
70
|
+
|
|
71
|
+
## Keep the material private
|
|
72
|
+
|
|
73
|
+
Merge these entries into the existing `exclude` list in `_config.yml`:
|
|
74
|
+
|
|
75
|
+
```yaml
|
|
76
|
+
exclude:
|
|
77
|
+
- practiques/
|
|
78
|
+
- sandbox/
|
|
79
|
+
- dist/
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Keep the existing exclusions. Add `sandbox/practiques/` and `dist/practiques/`
|
|
83
|
+
to `.gitignore` if broader rules do not already cover them. Version the editable
|
|
84
|
+
practice sources. Git ignore rules do not exclude files from Jekyll by themselves.
|
|
85
|
+
The profile check rejects missing web exclusions when practice sources exist.
|
|
86
|
+
|
|
87
|
+
## Build with MCP or the CLI
|
|
88
|
+
|
|
89
|
+
Use a runtime whose tool inventory advertises `manual_practice_pdf_build`.
|
|
90
|
+
Existing connections keep their loaded code until the client reconnects to an
|
|
91
|
+
updated runtime. Prepare the selected PDF image explicitly before the first run.
|
|
92
|
+
|
|
93
|
+
```text
|
|
94
|
+
manual_practice_pdf_build(
|
|
95
|
+
source="practiques/accessibility/en/alumnat/README.md",
|
|
96
|
+
version="2026-10-r1"
|
|
97
|
+
)
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
The equivalent factory-backed CLI command is:
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
unaltraweb-mcp --project "$PWD" mcp manual-practice-pdf-build \
|
|
104
|
+
--source practiques/accessibility/en/alumnat/README.md \
|
|
105
|
+
--version 2026-10-r1
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Use `--dry-run` for a read-only plan. `--run review-2` selects a named review or
|
|
109
|
+
retry while retaining an earlier attempt. The result gives the PDF, first-page
|
|
110
|
+
preview, receipt and job paths under `sandbox/practiques/<slug>/`.
|
|
111
|
+
|
|
112
|
+
For a maintainer testing a core checkout, the corresponding factory target is:
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
MCP_CONSUMER_WORKSPACE="$PWD" make -C /path/to/unaltraweb \
|
|
116
|
+
manual-practice-pdf-build \
|
|
117
|
+
PRACTICE_SOURCE=practiques/accessibility/en/alumnat/README.md \
|
|
118
|
+
PRACTICE_VERSION=2026-10-r1
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
The worker runs without network access, with a read-only input snapshot and one
|
|
122
|
+
writable output directory. A repeated request verifies and reuses an unchanged
|
|
123
|
+
sealed job. Changed inputs produce another job; edited or incomplete attempts
|
|
124
|
+
are retained. Updating only the MCP package version does not invalidate a reading
|
|
125
|
+
whose effective inputs and rendering controls are unchanged.
|
|
126
|
+
|
|
127
|
+
The command returns `publishes: false`. Review the PDF before distributing it.
|
|
128
|
+
Practice versions are independent of the manual's `latest` or stable release
|
|
129
|
+
selectors. Compiling a reading does not analyse GIS data, assemble Moodle ZIPs,
|
|
130
|
+
upload files or publish material on the website.
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# Web #98 / gaContExt #32 — 0.7.2 source checkpoint
|
|
2
|
+
|
|
3
|
+
This is a draft consolidation, not a published release or an installed 0.7.2
|
|
4
|
+
cohort. It includes private reading/PDF composition, portable bindings and author
|
|
5
|
+
resources, independent PDF/ZIP delivery, the host reaper correction, the shared
|
|
6
|
+
source-CI control, and preparation of runtime archives for the existing hub loader.
|
|
7
|
+
Earlier candidate reports describe their historical checkpoints; their source
|
|
8
|
+
snapshots, images, wheels, receipts and retained evidence remain unchanged.
|
|
9
|
+
|
|
10
|
+
**Current private-runtime decision:** QGIS 0.6.0 is released but private. The earlier
|
|
11
|
+
wheel-install plan below is superseded by [native private-runtime delegation](private-practice-verifier-98.md).
|
|
12
|
+
Public Web builds now contain only the Web bridge/metadata; the hub prepares the
|
|
13
|
+
private QGIS controller. No published/private wheel is downloaded into Web.
|
|
14
|
+
The three independent review P2 findings are reproduced and corrected in this
|
|
15
|
+
source delta; a new source review and independent runtime check are still required
|
|
16
|
+
on its committed HEAD. The H2 contract declares the private producer's hash-bound
|
|
17
|
+
`release.json` externally; public runtime archives contain only Web-only and PDF
|
|
18
|
+
images. Local acceptance and the external receipt are documented in the linked
|
|
19
|
+
bridge and archive contracts.
|
|
20
|
+
|
|
21
|
+
## Blockers recorded at the original draft checkpoint
|
|
22
|
+
|
|
23
|
+
The first two entries describe the superseded installer plan at `88dd2518`, not
|
|
24
|
+
current requirements to make QGIS public or embed its wheel:
|
|
25
|
+
|
|
26
|
+
- The final **published QGIS wheel URL and SHA-256 are still missing**. The owner
|
|
27
|
+
reports prepared source `a660dfa54ea6bc6cf5d3d3fbeb12593f62c726e1` and wheel
|
|
28
|
+
`dde653f7a719d8dbb20b4471e3cdb7f9c99cbdfcb116647caba5a08e710c7b76`
|
|
29
|
+
pending re-review. This is not an accepted published pin and is not installed
|
|
30
|
+
or inserted into the BOM by this checkpoint.
|
|
31
|
+
- `Dockerfile.mcp` deliberately refuses its verifier installation until that
|
|
32
|
+
released owner component is declared. Docker CI may stop at this gate; no
|
|
33
|
+
check, job or refusal is disabled to manufacture a green result.
|
|
34
|
+
- Select the new permanent reviewed core commit after integration. The current
|
|
35
|
+
`consumer_integration.core_sha` remains the previous reviewed `3332e0b…`
|
|
36
|
+
point during this draft, not a claim that it already contains the new tools.
|
|
37
|
+
- Final same-source package/image candidates, their acceptance and a new
|
|
38
|
+
receipt-only release checkpoint remain pending. `release-candidates.json`
|
|
39
|
+
still belongs to published 0.7.1 and is not a 0.7.2 authorization.
|
|
40
|
+
|
|
41
|
+
The coordinated gem/wheel/runtime/MCP declarations now name **0.7.2**. Nothing
|
|
42
|
+
re-emits 0.7.1 with new bytes. The checkout launcher and source-checker lane keep
|
|
43
|
+
their previously published MCP digest until a new published digest is reviewed.
|
|
44
|
+
|
|
45
|
+
## Preserved tuple
|
|
46
|
+
|
|
47
|
+
- Workflow: `3332e0b93933f12317e05f1ce8d38ce80046feab`.
|
|
48
|
+
- PDF 0.7.1:
|
|
49
|
+
`ghcr.io/dosquartsdedocs/unaltraweb-manual-pdf@sha256:1bb3f2dafd741e96c28639ec1cc8ccaeb81cbaa73e649f787c0b4ef59997bd4b`.
|
|
50
|
+
- Actual PDF producer: `b7ec1d7a139c65b3b0b88699cdbeb19080f13be1`.
|
|
51
|
+
- PDF configuration ID:
|
|
52
|
+
`sha256:618163d3f924439792b2306617bd9612f566c5881166102fa544b4e782d569fa`.
|
|
53
|
+
- All nine retained-document checkers remain byte-identical to the reviewed
|
|
54
|
+
core/PDF point. Diavisuals/Vega compatibility is not widened.
|
|
55
|
+
|
|
56
|
+
## Reproducibility and retained evidence
|
|
57
|
+
|
|
58
|
+
The publishable wheel carries the source-CI runner, policy schema, common workflow
|
|
59
|
+
template and native private-runtime bridge/descriptor. The normal MCP image runs
|
|
60
|
+
the factory-owned compositor/scripts and delegates verification to the prepared
|
|
61
|
+
private QGIS controller. Neither public entrypoint requires consumers to copy
|
|
62
|
+
generic code or inspect a mutable provider checkout.
|
|
63
|
+
|
|
64
|
+
`prepare_practice_candidate.py`, `prepare_practice_editions_candidate.py` and
|
|
65
|
+
their pinned rc fixture defaults are historical acceptance/preparation tools.
|
|
66
|
+
They do not replace the normal release pipeline, and their old local candidates
|
|
67
|
+
must not be regenerated or relabelled as the final release. Archived source and
|
|
68
|
+
image hashes identify those exact historical bytes.
|
|
69
|
+
|
|
70
|
+
Source-CI/composition tests and synthetic fixture recipes are versioned here.
|
|
71
|
+
Datasets, rendered PDFs/ZIPs, Docker-save archives and retained job outputs stay
|
|
72
|
+
outside Git. Detailed evidence and transfer hashes are recorded in:
|
|
73
|
+
|
|
74
|
+
- [Practice editions and bindings](practice-editions-98.md).
|
|
75
|
+
- [Runtime archives and independent PDF producer identity](practice-runtime-archives-98.md).
|
|
76
|
+
- [Shared public-source CI](source-ci-98.md).
|
|
77
|
+
- [Installable practice-PDF acceptance](practice-pdf-installable-98.md).
|
|
78
|
+
|
|
79
|
+
The source validation before this version declaration passed 706 tests
|
|
80
|
+
(679 passed / 27 optional skips), fresh-wheel installation, source/workflow
|
|
81
|
+
checks and native bounded source-checker execution. After declaring 0.7.2,
|
|
82
|
+
the suite passes 706 cases (678 passed / 28 skips): the additional skipped
|
|
83
|
+
Docker mount-parser test requires the not-yet-prepared 0.7.2 MCP image. It was
|
|
84
|
+
not redirected to an older image to claim a new-runtime pass. A fresh 0.7.2 wheel
|
|
85
|
+
build/install and distribution/workflow/whitespace checks passed at that original
|
|
86
|
+
checkpoint; its publication readiness was false because the QGIS pin was absent.
|
|
87
|
+
|
|
88
|
+
The later private-runtime/P2 checkpoint passes **720 tests (692 passed / 28
|
|
89
|
+
skips)** and fresh-wheel installation. Native local evidence verifies Web package
|
|
90
|
+
absence, v1/v2 delegation, sealed PDF/ZIP pairs, selected-resource-only engine
|
|
91
|
+
mounts and exact teardown. Distribution metadata is now structurally ready while
|
|
92
|
+
private checks remain explicitly `not_run` in public CI. The final source's hosted
|
|
93
|
+
CI and independent re-review are tracked on PR #104; local evidence is not
|
|
94
|
+
relabeled as those gates. The receipt-only H2 addition leaves executable bytes and
|
|
95
|
+
selected image/schema identities unchanged, so retained native renders are reused.
|
|
96
|
+
None of this publishes or approves the manuals' draft teaching content. W1 draft
|
|
97
|
+
PR #103 is outside this consolidation.
|
|
@@ -87,6 +87,14 @@ does not authorize removal. `reap-session` preserves a live backend or running
|
|
|
87
87
|
job, and recovers only that retired session's idle resources. Occupied or foreign
|
|
88
88
|
networks fail closed. No fresh-helper PID is presented as the backend's PID.
|
|
89
89
|
|
|
90
|
+
Exited-resource recovery compares complete Docker observations while canonicalizing
|
|
91
|
+
only the order of mount records. Every mount field, field type and duplicate record
|
|
92
|
+
remains significant; a real identity/state/mount change still refuses removal.
|
|
93
|
+
Removal failure or timeout is reported separately from observation drift, and
|
|
94
|
+
the exact container ID must be absent before release is confirmed. This recovery
|
|
95
|
+
code runs in the installed host adapter: selecting a controller image does not
|
|
96
|
+
update an already installed adapter.
|
|
97
|
+
|
|
90
98
|
The legacy `down` / `make mcp-down` is an explicit **workspace-wide** shutdown;
|
|
91
99
|
`mcp-down-all` is maintainer/factory-wide. Neither is the hub's per-client toggle
|
|
92
100
|
operation. The managed sequence is live drain, close this transport, inspect its
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# Consolidated deployment integration — 0.7.1
|
|
2
2
|
|
|
3
|
+
Published [v0.7.1](https://github.com/dosquartsdedocs/unaltraweb/releases/tag/v0.7.1)
|
|
4
|
+
on 2026-10-07. The [final delivery report](owner-closeout-93.md) supersedes the
|
|
5
|
+
chronological preparation states below and binds the accepted published bytes.
|
|
6
|
+
|
|
3
7
|
Owner: [issue 93](https://github.com/dosquartsdedocs/unaltraweb/issues/93), following
|
|
4
8
|
the workflow-only [issue 86 correction](deploy-provenance-86.md). The owner
|
|
5
9
|
authorized implementation, review/integration and gated 0.7.1 publication.
|
|
@@ -2,6 +2,29 @@
|
|
|
2
2
|
|
|
3
3
|
This is the component contract for MCP agents drafting or reviewing `unaltremanual` content. Read it together with the consumer site's `context/writing-profile.md`.
|
|
4
4
|
|
|
5
|
+
## Private practice readings
|
|
6
|
+
|
|
7
|
+
Standalone practice readings live in `practiques/<slug>/<lang>/<alumnat|docent>/`,
|
|
8
|
+
using `LLEGIU-ME.md` (ca), `LEEME.md` (es) or `README.md` (en). Use
|
|
9
|
+
`manual_practice_pdf_build` with an explicit practice version to produce a
|
|
10
|
+
private A4-landscape PDF under an ignored, retained `sandbox/practiques/` job.
|
|
11
|
+
The source requires front-matter `title`; `lang` must agree with the path.
|
|
12
|
+
Use `#` for body sections and `##` for subsections. Keep a table's `Table:`
|
|
13
|
+
caption and each standalone image's descriptive caption with its source.
|
|
14
|
+
|
|
15
|
+
The practice wrapper reuses site metadata and manual typography. Course codes
|
|
16
|
+
appear in parentheses beside the subject; the practice version is shown without
|
|
17
|
+
the academic year. Logos occur only on the first page. Figures are centred and
|
|
18
|
+
automatically fit the usable page after reserving the caption and its spacing.
|
|
19
|
+
|
|
20
|
+
The initial reading API accepts ordinary Pandoc Markdown, local PNG/JPEG/PDF
|
|
21
|
+
images, links, maths, fenced code and captioned tables. Use provider-rendered
|
|
22
|
+
printable images rather than executable or remote visual sources. Liquid,
|
|
23
|
+
manual-only component wrappers and automatic bibliography assembly are outside
|
|
24
|
+
this reading syntax. Its private source paths are not added to the public
|
|
25
|
+
editorial/translation inventories. Review the returned PDF explicitly; a layout
|
|
26
|
+
approval does not change source `content_status` or authorize publication.
|
|
27
|
+
|
|
5
28
|
## Paragraph development
|
|
6
29
|
|
|
7
30
|
Diagnose paragraph function before polishing sentences. A paragraph should normally have one primary job and, when the material warrants it, develop this sequence:
|