diff --git a/Justfile b/Justfile
index f656abf..4b94e97 100644
--- a/Justfile
+++ b/Justfile
@@ -46,7 +46,8 @@ test-file path pattern=".*":
fi
mkdir -p .data/test-logs
log="$(mktemp .data/test-logs/test-XXXXXX)"
- timeout --signal=TERM --kill-after=5s 120s {{ gerbil_darwin_env }} gerbil -:max-heap=2G,debug=q test -v 5 -r "{{pattern}}" "{{path}}" 2>&1 | tee "$log"
+ # Establish the native package environment before gxtest initializes imports.
+ timeout --signal=TERM --kill-after=5s 120s {{ gerbil_darwin_env }} gerbil -:max-heap=2G,debug=q env gxtest -v 5 -r "{{pattern}}" "{{path}}" 2>&1 | tee "$log"
if rg 'ERROR (MODULE|CHECK|CASE|HARNESS)|Heap overflow|Stack overflow' "$log"; then exit 1; fi
rg -F -x 'MODULE-OK {{path}}' "$log" >/dev/null
rg -F 'HARNESS-OK' "$log" >/dev/null
diff --git a/docs/10-19-design/10-architecture/10.147-source-bound-c-and-cpp-contract-verification.org b/docs/10-19-design/10-architecture/10.147-source-bound-c-and-cpp-contract-verification.org
index a0ac7b6..749e90c 100644
--- a/docs/10-19-design/10-architecture/10.147-source-bound-c-and-cpp-contract-verification.org
+++ b/docs/10-19-design/10-architecture/10.147-source-bound-c-and-cpp-contract-verification.org
@@ -10,15 +10,16 @@
#+BEGIN_QUOTE
The later [[file:10.148-flat-declarative-library-boundary.org][10.148 Library boundary]] supersedes this proposal's placement of source
capture, process execution and evidence issuance. They are consumer/test duties,
-not a Runtime implemented by this Library. The contract obligations below remain
-design requirements, not executed proof claims.
+not a Runtime implemented by this Library. The general contract obligations remain
+requirements. The bounded C/C++ subjects and observed acceptance are identified
+explicitly below; they do not establish arbitrary-project correctness.
#+END_QUOTE
* Goal and decision boundary
:PROPERTIES:
:JD_ID: 10.147
:CUSTOM_ID: source140-goal
-:STATUS: design-proposed-not-implemented
+:STATUS: bounded-real-source-qualified-cold-install-open
:END:
Extend the existing Library, POO and ASCENT architecture so that a domain
@@ -26,8 +27,11 @@ obligation can be checked against actual C/C++ function bodies, their callers
and the native artifact that uses them. The subject is reusable C/C++ engineering
capability across projects, not an SMP integration project. SMP illustrates one
possible application of capacity and resource-lifecycle contracts. This document
-defines the design and per-project implementation gates; it reports no executed
-C/C++ verification. Acquiring SMP source is not a prerequisite for this work.
+defines the reusable design and per-project implementation gates. Maintained C
+capacity/caller and C++ resource-lifetime subjects now have actual CBMC/native
+results and ASCENT integration controls. Other families and consuming projects
+still require their own captures and evidence. Acquiring SMP source is not a
+prerequisite for this work.
#+BEGIN_QUOTE
A checked model is not a checked implementation. A checked function under a
@@ -389,20 +393,22 @@ reasoning without inheriting unsupported implementation conclusions.
| Gate | Completion condition | Current state |
|------+----------------------+---------------|
-| G0 Source | The selected consuming project's actual functions/callers and full configuration captured | Required when verifying that implementation; no project selected here |
-| G1 Scope | Reviewed local contract, parent refinement, reachable-state assumptions and independent oracle | Designed; source-specific review pending |
-| G2 Static | Real-body checks, caller premises, nonvacuity controls and explicit completeness classification | Not implemented |
-| G3 Counter | Historical reproduction where available, fixed replay and negative controls for excluded failure/units | Not executed |
-| G4 Native | Same-source real build, artifact lineage, regression and propagation behavior | Not executed |
-| G5 Integration | Native POO selection, actual ASCENT registration/queries, invalidation and reuse controls | Not implemented |
-| G6 Review | Scoped closure of findings and required authorization under existing Aitia policy | Not executed |
+| G0 Source | Actual functions/callers, harnesses and declared configuration captured | Observed for maintained C bounded-capacity and C++ resource-lifetime subjects; no SMP or arbitrary consumer capture claimed |
+| G1 Scope | Local contract, parent refinement, reachable-state assumptions and independent oracle | Explicit for these subjects; C caller premises and C++ constructor/counter premises remain part of applicability |
+| G2 Static | Real-body checks, caller premises, nonvacuity controls and explicit completeness classification | Actual C body/contract/caller and C++ bounded checks pass; bounded solver results are not universal language proofs |
+| G3 Counter | Real negative controls for the selected failure semantics | Actual missing-overflow-guard and occupied-transfer source mutants produce counters; no historical SMP repair claimed |
+| G4 Native | Same-source build, artifact lineage and native regression | Actual C and C++ native artifacts execute successfully; full compiler backend/SDK attestation remains unsupported |
+| G5 Integration | Native POO selection, actual ASCENT registration/queries, invalidation and reuse | Eight real-source cases plus native language-owner controls pass; reuse shares an identical implementation capture, not unrelated code |
+| G6 External review | Consumer-required findings disposition and current-use authorization | Owned by the consuming ecosystem; Library support is not an Aitia approval or application permit |
+| G7 Package qualification | Native package identities, compiled ABI and complete cold dependency installation | Earlier local manifests/compiled consumers and root source build pass; subsequent ordinary Core/root deadline failures require requalification; full cold installation remains open |
Implementation tests for Scheme integration belong in =t/*-test.ss=. Future
verifier harnesses remain C/C++ assets. Preserve the established per-process
2 GiB heap and 180-second acceptance budget for applicable Gerbil processes;
derive concurrency from machine resources. Before any solver run, record a
method-specific resource policy; a budget termination is pending, never proof.
-This design does not change existing budgets or claim a solver run occurred.
+These results do not change existing budgets. Their authority is limited to the
+actual maintained subjects, declared tool/method inputs and observed runs.
The maintenance cost is contracts, environment models, tool qualification and
representation mappings. A consuming project can begin with a critical boundary
@@ -421,22 +427,27 @@ defect detection and review effort before expanding a project's verified scope.
- [X] Define historical counter retention, current applicability and reuse boundaries.
- [X] Use existing Module, Profile, Scenario, Catalog and evidence/review owners.
- [X] Separate generic C/C++ adoption from optional SMP illustration.
-- [ ] For a later selected consumer, capture its source before claiming implementation evidence.
-- [ ] Validate the proposed mapping with actual Yuanxu/ASCENT APIs and real results.
+- [X] Capture maintained C/C++ subjects before issuing their implementation evidence.
+- [X] Exercise native Yuanxu selection and actual ASCENT registration/query with real results.
+- [ ] Capture and qualify each additional consuming implementation before transferring a claim.
+- [ ] Complete cold dependency installation without treating incremental recovery as a cold pass.
* Documentation verification
:PROPERTIES:
:CUSTOM_ID: source140-documentation-checks
:END:
-The new Org document passes =org-lint= with no findings. Local file links,
+The original design revision passed =org-lint= with no findings. Local file links,
English-only text, unique CUSTOM_ID values, eight SG gold rows and eight SC-R
rule rows were checked. D2 was formatted and rendered with =--layout elk
--theme 0 --pad 24=; the SVG was visually reviewed after simplifying long
feedback edges. README and both indexes link the new design and view.
-These checks establish document structure and navigability only. All source,
-tool execution and integration gates above retain their stated pending status.
+Those historical checks establish document structure and navigability only.
+The current view is maintained by the repository's TypeScript rendering and
+source-receipt checks. Actual source/tool/integration results are qualified
+separately in the gate table and current real-source controls; rendering never
+promotes a pending package gate to acceptance.
* Primary references
:PROPERTIES:
diff --git a/docs/10-19-design/10-architecture/10.149-unified-language-engineering-configuration.org b/docs/10-19-design/10-architecture/10.149-unified-language-engineering-configuration.org
index 08d1e9c..cd0c45d 100644
--- a/docs/10-19-design/10-architecture/10.149-unified-language-engineering-configuration.org
+++ b/docs/10-19-design/10-architecture/10.149-unified-language-engineering-configuration.org
@@ -186,3 +186,102 @@ ASCENT evidence and application authorization are not issued by these views.
PNG export uses the existing lossless compression path. The separate raster
comparison checks decoded PNG/WebP pixels against each source image; compressed
output is not substituted beneath an unchanged image digest.
+
+** Native package startup and build-projection acceptance
+:PROPERTIES:
+:CUSTOM_ID: package-startup-projection
+:ENTRY_OWNER: Justfile::test-file
+:CONSUMER: t/project-formation-build-test.ss
+:END:
+
+The native test entry is =gerbil env gxtest=. Package environment selection must
+precede test-tool initialization. With this selected SDK/cohort, plain
+=gerbil test= failed while expanding Core's generated POO import, even after a
+native Core clean/rebuild. Establishing =GERBIL_PATH= before process startup
+removed that import failure; the maintained entry delegates that selection to
+Gerbil's =env= command rather than constructing another load path or resolver.
+The independent compiled POO consumer also imports successfully. This evidence
+does not establish a general POO export defect or a stale-product-only cause.
+
+The real compiled-root consumer checks the maintained formation Profile target,
+one canonical =(gxc: "config")= row, identical specification identity on repeated
+reads and refusal to change retained roots within one init epoch. Config is
+already selected through the Profile dependency graph; it must not also appear
+as a duplicate ordinary retained target. The separate native root source build
+passes; switching the consumer to its public compiled import does not substitute
+for that source build. The removed =profiles/library-formation= path is no longer
+an asserted product.
+
+All test markers and error scanning remain mandatory. The 120-second test fence,
+180-second build fence, per-process 2 GiB heap and machine-derived compiler
+concurrency are unchanged. A zero-exit incremental package build was insufficient
+to repair the startup failure and is not treated as consumer acceptance.
+
+A real native Core clean followed by a rebuild exceeded 180 seconds (exit 124).
+The subsequent incremental recovery completed and the root source build passed;
+neither result converts the failed cold rebuild into a pass. Complete cold
+dependency installation remains open. Remote Linux rendering failed during
+Chromium system-dependency installation with Ubuntu mirror DNS errors; macOS
+passed at 4f43d48. Those infrastructure observations do not qualify Linux tests.
+
+*** Cold-build measurement and control
+:PROPERTIES:
+:CUSTOM_ID: core-cold-measurement-control
+:END:
+
+The subsequent Core diagnostic build completed naturally in 127.41 seconds with
+=GERBIL_BUILD_VERBOSE=2=. Its native stage clocks place specification completion
+at 20.30 seconds, Make entry at 21.57 seconds and main return at 122.47 seconds.
+It generated 274 distinct Scheme targets and scheduled 587 Gambit compilation
+jobs; no repeated target-generation row was observed. This does not rule out
+repeated internal expansion or metadata work. A
+process observation found twelve =gsc= children, matching machine-derived
+concurrency; the single/dual-worker hypothesis is not supported for this run.
+
+The ordinary-entry control used native clean again. Before starting, an inventory
+found zero remaining Core =.ssi=, =.ssxi.ss=, dynamic objects or static Scheme
+products, including the off-prefix Yuanxu prelude. Prerequisite packages and the
+SDK remained installed; this is a Core-product cold control, not a fresh Parent
+dependency installation or an operating-system cache reset.
+
+That ordinary control did not pass: the 180-second timeout escalated after the
+unchanged five-second termination grace and the command ended with signal 9 at
+185.32 seconds. No natural completion marker was observed. The diagnostic pass
+therefore cannot establish ordinary cold-build acceptance. Instrumentation,
+scheduling, input order and host load remain candidate explanations; neither a
+GC diagnosis nor an accounting-based optimization has been established. The
+captured resource sample and job count do not justify a heap or worker change.
+
+The installed Core also differs from its current open upstream PR by 188
+commits, and that PR declares a different POO revision. The candidate must be
+qualified as a coherent native dependency set; upstream success cannot be
+transferred to the installed cohort. Package management remains the dependency
+owner. No isolated leaf pin, fabricated manifest or compatibility layer is used
+to hide this outstanding qualification.
+
+The observed native manifest chain is:
+
+#+NAME: native-cohort-upgrade-owners
+| Existing owner | Observed declaration | Upgrade obligation |
+|----------------+----------------------+--------------------|
+| Core PR 19 | A newer POO revision than the installed Core | Qualify the exact declared POO/Core pair |
+| Parser PR 23 | Still selects the installed older Core | Change its own declaration and qualify its native consumers before publishing a replacement revision |
+| ASCENT PR 1 | Still selects the same older Core | Qualify native rules/queries against the candidate Core before publishing its revision |
+| Orgize PR 18 | Selects the older Parser candidate | Consume the qualified Parser revision and exercise real generated parser build/consumer paths |
+| Parent PR 34 | Selects Parser, Orgize and ASCENT candidates | Compose their published compatible revisions through native package management |
+| This Library | Selects only Parent | Promote Parent only after native install, build, metadata and actual C/C++/ASCENT consumer gates |
+
+An open PR name is not a version-selection instruction. Each declaration belongs
+to its existing package owner; the root must not add a competing direct Core or
+POO pin. Parent's optional source Core gitlink is a separate source ownership
+declaration and must not silently replace the selected native package identity.
+The table records investigation and required validation, not completed upgrades.
+
+The instrumented incremental recovery subsequently completed, but the ordinary
+root source rebuild after recovery also exceeded its unchanged deadline. Earlier
+successful root/consumer results remain historical observations at the recorded
+baseline; they do not establish current whole-package acceptance after this
+control sequence. Requalification requires a naturally completed ordinary root
+build and its native metadata/consumer checks. The sampled shared host had load
+averages above thirty on twelve cores; this is relevant context, not proof that
+host contention alone caused the failures. No unrelated process was stopped.
diff --git a/docs/90-99-views/90-architecture-views/90.139-source-bound-c-and-cpp-contract-verification.d2 b/docs/90-99-views/90-architecture-views/90.139-source-bound-c-and-cpp-contract-verification.d2
index 575d8bc..3458975 100644
--- a/docs/90-99-views/90-architecture-views/90.139-source-bound-c-and-cpp-contract-verification.d2
+++ b/docs/90-99-views/90-architecture-views/90.139-source-bound-c-and-cpp-contract-verification.d2
@@ -62,7 +62,7 @@ plans: "Scheme method declarations\nTyped verification plans; no execution"
methods: "Development verification\nReal body + callers; bounded CBMC / native tests"
math: "Lean / Quint correspondence\nNumeric lemmas / state-order assumptions"
oracle: "Independent checks\nLiteral gold and actual source mutants\nOccupied refusal / self transfer"
-closure: "Captured evidence inputs\nSource, harness, tools, bounds and configuration\nSix retained real results; five full test cases"
+closure: "Captured evidence inputs\nSource, harness, tools, bounds and configuration\nEight real-source cases; independent native owner controls\nCold dependency installation remains unqualified"
ascent: "ASCENT relations\nSupport, counter, pending and reuse premises"
consumer: "External consuming ecosystem\nReview and current-use authorization"
change: "Changed source or assumptions\nNew capture; retain old witnesses and frozen queries"
diff --git a/docs/90-99-views/90-architecture-views/90.139-source-bound-c-and-cpp-contract-verification.json b/docs/90-99-views/90-architecture-views/90.139-source-bound-c-and-cpp-contract-verification.json
index 38ad8e3..aba8eda 100644
--- a/docs/90-99-views/90-architecture-views/90.139-source-bound-c-and-cpp-contract-verification.json
+++ b/docs/90-99-views/90-architecture-views/90.139-source-bound-c-and-cpp-contract-verification.json
@@ -2,8 +2,8 @@
"status": "Design projection only; no Scheme or verifier acceptance",
"sources": {
"bun.lock": "641fa6fb5dd7cc87c32d15ea62a71664efe83d06b0f0f3fe8373f58fb130b346",
- "docs/10-19-design/10-architecture/10.147-source-bound-c-and-cpp-contract-verification.org": "251358b226d04f2a0173e7f349e3a8ae6335f12a5eff683539b1c230f27ce6e3",
- "docs/90-99-views/90-architecture-views/90.139-source-bound-c-and-cpp-contract-verification.d2": "0de4c4f5b4ca75696edad61238188d7417112fff0d8264e74e5d03eb589bdd85",
+ "docs/10-19-design/10-architecture/10.147-source-bound-c-and-cpp-contract-verification.org": "9f39c4e219a44314a10c2c6d6ae679168f7cee33dcb0c091e79861db0199a3dd",
+ "docs/90-99-views/90-architecture-views/90.139-source-bound-c-and-cpp-contract-verification.d2": "44c88c23c6383a9a8b8e7781fe7138abb57c96ed1ae4e6a403ccd911c3937894",
"package.json": "b0c1736c46211bf763696ec088c92281cea4de6dece9644d3b647f5d746dfb53",
"packages/render/examples/attribution.ts": "58f7914284a69c4ce42db61ec24c06cf9194232ed3402fc7ae12e3ded4187892",
"packages/render/examples/library-boundary.ts": "8a797e2f1700589373bcc173d3c7b80cfc933fd3b8fdc29b1b6cec87b1a609b5",
@@ -23,10 +23,10 @@
"lossless": true,
"effort": 4
},
- "inputBytes": 503397,
- "outputBytes": 224014
+ "inputBytes": 534590,
+ "outputBytes": 237060
},
- "sha256": "b28dbcc7a994622e8f2a347ccde614eaaa6716dec4fa0a23b48d18f8d98d79ee"
+ "sha256": "08d89e282f973fd26d7a1a397ca851dfb9b11f899a8398267e3b29a9631c6aa4"
},
"preferredRaster": "webp",
"pngCompression": {
@@ -36,8 +36,8 @@
"compressionLevel": 9,
"adaptiveFiltering": true
},
- "inputBytes": 503397,
- "outputBytes": 496970,
+ "inputBytes": 534590,
+ "outputBytes": 527707,
"selected": "compressed"
},
"regions": {}
@@ -54,104 +54,104 @@
"x": 0,
"y": 0,
"width": 1400,
- "height": 1106.984375
+ "height": 1138.984375
},
"subjects": [
{
"id": "parent",
"role": "default",
"x": 556.4854736328125,
- "y": 262.18817138671875,
- "width": 202.6021728515625,
- "height": 85.6507568359375
+ "y": 262.1882629394531,
+ "width": 202.60223388671875,
+ "height": 85.65078735351562
},
{
"id": "profile",
"role": "default",
- "x": 578.1608276367188,
- "y": 393.57550048828125,
- "width": 218.4364013671875,
- "height": 85.38897705078125
+ "x": 578.1607666015625,
+ "y": 393.5756530761719,
+ "width": 218.4365234375,
+ "height": 85.38900756835938
},
{
"id": "scenario",
"role": "default",
- "x": 854.9517822265625,
- "y": 524.993408203125,
- "width": 203.1610107421875,
- "height": 83.453857421875
+ "x": 854.9518432617188,
+ "y": 524.9935302734375,
+ "width": 203.16119384765625,
+ "height": 83.4539794921875
},
{
"id": "contracts",
"role": "default",
- "x": 250.80201721191406,
- "y": 524.4169921875,
- "width": 249.3784637451172,
- "height": 84.132568359375
+ "x": 250.80178833007812,
+ "y": 524.4171752929688,
+ "width": 249.37857055664062,
+ "height": 84.13262939453125
},
{
"id": "plans",
"role": "default",
- "x": 522.828369140625,
- "y": 524.60498046875,
- "width": 256.45037841796875,
+ "x": 522.8282470703125,
+ "y": 524.605224609375,
+ "width": 256.45050048828125,
"height": 84.1192626953125
},
{
"id": "methods",
"role": "default",
- "x": 488.3865051269531,
- "y": 655.3336181640625,
- "width": 325.6199645996094,
+ "x": 488.3863830566406,
+ "y": 655.3339233398438,
+ "width": 325.6201477050781,
"height": 84.178955078125
},
{
"id": "math",
"role": "default",
- "x": 836.8213500976562,
- "y": 655.275146484375,
- "width": 281.31756591796875,
+ "x": 836.8214111328125,
+ "y": 655.2754516601562,
+ "width": 281.3177490234375,
"height": 84.17138671875
},
{
"id": "oracle",
"role": "default",
- "x": 807.847412109375,
- "y": 786.9891967773438,
- "width": 254.6597900390625,
- "height": 115.314453125
+ "x": 807.8474731445312,
+ "y": 786.989501953125,
+ "width": 254.65985107421875,
+ "height": 115.3145751953125
},
{
"id": "closure",
"role": "default",
- "x": 729.6583862304688,
- "y": 949.2947387695312,
- "width": 307.99517822265625,
- "height": 116.42706298828125
+ "x": 685.6268310546875,
+ "y": 949.295166015625,
+ "width": 375.088623046875,
+ "height": 148.1243896484375
},
{
"id": "ascent",
"role": "default",
- "x": 795.4906616210938,
- "y": 131.58506774902344,
- "width": 297.56597900390625,
- "height": 85.02330017089844
+ "x": 795.49072265625,
+ "y": 131.5850830078125,
+ "width": 297.566162109375,
+ "height": 85.02334594726562
},
{
"id": "consumer",
"role": "default",
- "x": 854.8197021484375,
- "y": 262.616455078125,
- "width": 274.7335205078125,
- "height": 85.08010864257812
+ "x": 854.8197631835938,
+ "y": 262.61651611328125,
+ "width": 274.73370361328125,
+ "height": 85.08016967773438
},
{
"id": "change",
"role": "default",
- "x": 820.1569213867188,
- "y": 393.63360595703125,
- "width": 344.87969970703125,
- "height": 85.3089599609375
+ "x": 820.156982421875,
+ "y": 393.6337585449219,
+ "width": 344.8798828125,
+ "height": 85.30899047851562
}
],
"relations": [
@@ -193,24 +193,24 @@
},
"readability": {
"minimumTextSize": 12,
- "samples": 29,
+ "samples": 30,
"requiredMinimum": 12
},
- "inputSHA256": "b7f54b147012ec58f23e94c7eaed4f296f495f7d52125140034e2a50b86b81a4",
+ "inputSHA256": "5bf4ce0a3d6553c8f96db27647b3439131c176772f1d7acb7a818d96575287c6",
"scenes": [
{
- "inputSHA256": "31d1311b741b47d9b14d121f4c339168fcc9cd73b2594fef66b27412aa9f9dfb",
- "layoutSHA256": "83759a261357f43dc42d9fde8cb09663d52bedcce2f49559cab7b6435bc2d7cc",
+ "inputSHA256": "874e908224e1a64c025fd27379e2679c01e7f9b087c7f2e6dba8b16ae3668b64",
+ "layoutSHA256": "108cdd7f0c8ae20c02097c9c834dc38c1bf955062426a667f523071782508c9c",
"nodes": 12,
"edges": 14,
- "milliseconds": 126.78108299999985
+ "milliseconds": 619.1758330000002
}
],
"svgSHA256": [
- "40c0cc5519c26cd7f5ba801c7021e7ce78414737721b1b72dd212c2917dd884f",
- "99b53fb54dc44210216ef3b3255792e8209e88eeab73a43d26bcda4e05abb600"
+ "44411e144ec7caab5efd45af04696e9ddc25f16247503baf8d5995c5922256db",
+ "85463c8669f14e15d491ba76389fb0c1a025666d2ff96545b39788e1158b3d51"
],
- "composedHTMLSHA256": "3dd41d37efce5f92035fba680632d92a412b84a5119a8e6867509a9528552938",
+ "composedHTMLSHA256": "a99b29de7f254c3e0c93263a2ceb7cbf29c7898ca8caa96689a275f695ad886b",
"dependencies": {
"@fontsource/inter": "5.3.0",
"@fontsource/kalam": "5.3.0",
@@ -224,32 +224,32 @@
"web-worker": "1.5.0"
},
"regionSHA256": {},
- "htmlSHA256": "428394a88e1634fdd7b145825bfa4611ba5d7e45eb8a78478196014991f5c74f",
+ "htmlSHA256": "664d8d29e487e2ba9961c60116a3d031447912ec6688c3292ee8db40d6638c0d",
"drawing": "roughjs@4.6.6",
"routing": "elkjs@0.12.1",
"assetSHA256": {
- "@fontsource/kalam/files/kalam-latin-700-normal.woff2": "252063af6ade8b9a744cde4ddad0fc21ea53b8ba711eed121a0c2e8610ea9c93",
- "@fontsource/kalam/files/kalam-latin-400-normal.woff2": "954410601a823f37e219f7930b7446f86afa15621326a7078d56fb9c910135cb"
+ "@fontsource/kalam/files/kalam-latin-400-normal.woff2": "954410601a823f37e219f7930b7446f86afa15621326a7078d56fb9c910135cb",
+ "@fontsource/kalam/files/kalam-latin-700-normal.woff2": "252063af6ade8b9a744cde4ddad0fc21ea53b8ba711eed121a0c2e8610ea9c93"
},
- "pngSHA256": "f36503304cf4e9ecb5b5898ebfdd2f3b4539e09ffcf3c802f3a4589044e5db71",
+ "pngSHA256": "6334c3ca1fb731aa88165b97a3b401825ddc08dfb0b15956f3a8ae07c6207e9c",
"browser": "156.0.8078.4",
"width": 2100,
- "height": 1661,
+ "height": 1709,
"scale": 1.5,
"bounds": {
"model": {
"x": 20,
"y": 110,
"width": 1360,
- "height": 976.984375
+ "height": 1008.984375
}
}
},
"rasterComparison": {
- "pngBytes": 496970,
- "webpBytes": 224014,
+ "pngBytes": 527707,
+ "webpBytes": 237060,
"decodedPixelsEqual": true,
- "decodedPixelSHA256": "617345000cadfb663979b0cbfb3f16737ea1aea6e32504a3b2b6f98afab39af7",
+ "decodedPixelSHA256": "974f35fc9490ab646556379b063303ff7a032558a4ed42f8c4182f2cc395d835",
"preferredRaster": "webp"
}
}
diff --git a/docs/90-99-views/90-architecture-views/90.139-source-bound-c-and-cpp-contract-verification.png b/docs/90-99-views/90-architecture-views/90.139-source-bound-c-and-cpp-contract-verification.png
index 297d942..a9c129e 100644
Binary files a/docs/90-99-views/90-architecture-views/90.139-source-bound-c-and-cpp-contract-verification.png and b/docs/90-99-views/90-architecture-views/90.139-source-bound-c-and-cpp-contract-verification.png differ
diff --git a/docs/90-99-views/90-architecture-views/90.139-source-bound-c-and-cpp-contract-verification.svg b/docs/90-99-views/90-architecture-views/90.139-source-bound-c-and-cpp-contract-verification.svg
index 4d69dd2..0b562db 100644
--- a/docs/90-99-views/90-architecture-views/90.139-source-bound-c-and-cpp-contract-verification.svg
+++ b/docs/90-99-views/90-architecture-views/90.139-source-bound-c-and-cpp-contract-verification.svg
@@ -3,7 +3,7 @@ SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors
SPDX-FileCopyrightText: 2014 Indian Type Foundry (info@indiantypefoundry.com)
SPDX-License-Identifier: LGPL-2.1-or-later AND OFL-1.1
-->
-
\ No newline at end of file
+@font-face{font-family:"Kalam";font-style:normal;font-weight:700;src:url(data:font/woff2;base64,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) format('woff2')}{"renderer":{"package":"@deterministic-engineering/render","version":"1.0.2","icons":{"capture":"a647d42aa11f4e5e85d0bbf66f483f57f3c4ba3a9536362ed0eaaaae10a89cee","decision":"3535642a5b613372c3fd374151ec90aafa19b64b2d33d10b19162cad07a35c7a","document":"0bf9674a401262da8a646305cab00006954721c07765b9962e0dee1c31d560f7","evidence":"0a91b169aaa644829a054cbb94194efffaf4298f2b6f8fa8c6ec2b7b413a1766","library":"df474fa36a74016b79236fff58a980a8c18c682d1866211776e349a0eb4b2979","model":"0cfd1f9ed3873f556ace725a7b6a251ebe75d7d976567699276f34df36b2443b","obligation":"e76f4d34a7190400446c89e4e7d187762b885808a64a00c99455599d902570c5","pending":"cca7589bc3b1dcdebacb867c6836c6fc166257f05823555a268354ff9bfac00c","question":"dbf231e1568dc37189d5674d73c4bfc58a17eb8ada579b3f03bf2813d33c56f4","reference":"3814c570f79ab294252c36530de464c9364814b797afb862d9c62e728a8660fc","selection":"82b4ab6faf195fea0a891c35268e61c186e93e7c6a9d7967a4f6a73dbf25ae7f"}},"evidence":[],"presentation":{"options":{"elk.direction":"DOWN","elk.layered.spacing.nodeNodeBetweenLayers":"48"},"edgeLabels":false},"drawing":{"mode":"sketch","options":{"seed":29,"roughness":1.3,"strokeWidth":1.2,"fillStyle":"hachure","hachureGap":9,"fillWeight":0.6}},"fonts":[{"family":"Kalam","weight":400,"source":"@fontsource/kalam/files/kalam-latin-400-normal.woff2"},{"family":"Kalam","weight":700,"source":"@fontsource/kalam/files/kalam-latin-700-normal.woff2"}],"palette":{"background":"#FAF7EE","surface":"#FFFDF7","ink":"#283E43","muted":"#63716F","border":"#ADBBB5","accent":"#287F79","secondary":"#946B42","tint":"#EDF4E9","secondaryTint":"#F6EDD8","onAccent":"#FFFFFF","supported":"#237C69","pending":"#9A6C25","conflict":"#A84C60"},"inputSHA256":"5bf4ce0a3d6553c8f96db27647b3439131c176772f1d7acb7a818d96575287c6","model":{"subjects":[{"id":"parent","type":"rectangle","level":1,"label":"Parent Library\nModels, rules and obligations"},{"id":"profile","type":"rectangle","level":1,"label":"Profile Module\nABI, macros and method bounds"},{"id":"scenario","type":"rectangle","level":1,"label":"Consumer Scenario\nReal source, callers and faults"},{"id":"contracts","type":"rectangle","level":1,"label":"Source contracts\nPre/postconditions, writes and owners"},{"id":"plans","type":"rectangle","level":1,"label":"Scheme method declarations\nTyped verification plans; no execution"},{"id":"methods","type":"rectangle","level":1,"label":"Development verification\nReal body + callers; bounded CBMC / native tests"},{"id":"math","type":"rectangle","level":1,"label":"Lean / Quint correspondence\nNumeric lemmas / state-order assumptions"},{"id":"oracle","type":"rectangle","level":1,"label":"Independent checks\nLiteral gold and actual source mutants\nOccupied refusal / self transfer"},{"id":"closure","type":"rectangle","level":1,"label":"Captured evidence inputs\nSource, harness, tools, bounds and configuration\nEight real-source cases; independent native owner controls\nCold dependency installation remains unqualified"},{"id":"ascent","type":"rectangle","level":1,"label":"ASCENT relations\nSupport, counter, pending and reuse premises"},{"id":"consumer","type":"rectangle","level":1,"label":"External consuming ecosystem\nReview and current-use authorization"},{"id":"change","type":"rectangle","level":1,"label":"Changed source or assumptions\nNew capture; retain old witnesses and frozen queries"}],"relations":[{"id":"(parent -> profile)[0]","src":"parent","dst":"profile","label":"","srcArrow":"none","dstArrow":"triangle"},{"id":"(profile -> scenario)[0]","src":"profile","dst":"scenario","label":"","srcArrow":"none","dstArrow":"triangle"},{"id":"(parent -> contracts)[0]","src":"parent","dst":"contracts","label":"","srcArrow":"none","dstArrow":"triangle"},{"id":"(profile -> plans)[0]","src":"profile","dst":"plans","label":"","srcArrow":"none","dstArrow":"triangle"},{"id":"(scenario -> methods)[0]","src":"scenario","dst":"methods","label":"","srcArrow":"none","dstArrow":"triangle"},{"id":"(contracts -> methods)[0]","src":"contracts","dst":"methods","label":"","srcArrow":"none","dstArrow":"triangle"},{"id":"(plans -> methods)[0]","src":"plans","dst":"methods","label":"","srcArrow":"none","dstArrow":"triangle"},{"id":"(math -> oracle)[0]","src":"math","dst":"oracle","label":"","srcArrow":"none","dstArrow":"triangle"},{"id":"(methods -> oracle)[0]","src":"methods","dst":"oracle","label":"","srcArrow":"none","dstArrow":"triangle"},{"id":"(oracle -> closure)[0]","src":"oracle","dst":"closure","label":"","srcArrow":"none","dstArrow":"triangle"},{"id":"(closure -> ascent)[0]","src":"closure","dst":"ascent","label":"","srcArrow":"none","dstArrow":"triangle"},{"id":"(ascent -> consumer)[0]","src":"ascent","dst":"consumer","label":"","srcArrow":"none","dstArrow":"triangle"},{"id":"(consumer -> change)[0]","src":"consumer","dst":"change","label":"","srcArrow":"none","dstArrow":"triangle"},{"id":"(change -> scenario)[0]","src":"change","dst":"scenario","label":"","srcArrow":"none","dstArrow":"triangle"}]},"view":{"source":"docs/90-99-views/90-architecture-views/90.139-source-bound-c-and-cpp-contract-verification.d2","title":"Source contracts: from Library obligation to scoped evidence","purpose":"workflow","kind":"library-workflow","question":{"subjectRefs":["parent","methods","ascent"],"ref":"ownership","text":"How does a consumer check actual C/C++ code without turning the Library into a Runtime?","focusRefs":["authority","declaration"]},"basis":{"captureRef":"design-candidate:90.139-source-bound-c-and-cpp-contract-verification","modelRefs":["docs/10-19-design/10-architecture/10.147-source-bound-c-and-cpp-contract-verification.org"],"obligationRefs":[],"evidenceRefs":[]}},"questions":[{"subjectRefs":["parent","methods","ascent"],"ref":"ownership","text":"How does a consumer check actual C/C++ code without turning the Library into a Runtime?","focusRefs":["authority","declaration"]}],"references":{"authority":"docs/10-19-design/10-architecture/10.147-source-bound-c-and-cpp-contract-verification.org","declaration":"docs/90-99-views/90-architecture-views/90.139-source-bound-c-and-cpp-contract-verification.d2"},"sourceSHA256":{"bun.lock":"641fa6fb5dd7cc87c32d15ea62a71664efe83d06b0f0f3fe8373f58fb130b346","docs/10-19-design/10-architecture/10.147-source-bound-c-and-cpp-contract-verification.org":"9f39c4e219a44314a10c2c6d6ae679168f7cee33dcb0c091e79861db0199a3dd","docs/90-99-views/90-architecture-views/90.139-source-bound-c-and-cpp-contract-verification.d2":"44c88c23c6383a9a8b8e7781fe7138abb57c96ed1ae4e6a403ccd911c3937894","package.json":"b0c1736c46211bf763696ec088c92281cea4de6dece9644d3b647f5d746dfb53","packages/render/examples/attribution.ts":"58f7914284a69c4ce42db61ec24c06cf9194232ed3402fc7ae12e3ded4187892","packages/render/examples/library-boundary.ts":"8a797e2f1700589373bcc173d3c7b80cfc933fd3b8fdc29b1b6cec87b1a609b5","packages/render/src/diagram.ts":"c0e831979970fc90c418820e4462d2097492811f10c7619dab1469b31194a32b","packages/render/src/export.ts":"52f5eda85f800d16f504556e3dad95ec6441f08bb753c674f5d10146f293967c","packages/render/src/figure.ts":"5e26825463ff0017dbd465ada1048a68994dee17a69bacc13d6806f416ca7972","packages/render/src/model-view.ts":"8a2c575c8c1a2f09770fb4cfdbe6718121a66c4fe8b32c97f7b2d88c9f7a57fc","packages/render/src/png.ts":"8d1da534a9fe8d8f27fccbf61b7e4ec0e8fd6754970c09c42105381b32b34d54","packages/render/src/scene-export.ts":"f5ba1250e1fe5e6c952ada3bc501979e4f9b8a8a0506a62a6e4cebdaf256a217","packages/render/src/webp.ts":"67dcfc1f1e333ae933f0f9d48b10640ba11b81fad394ff3361ca9b5f952223e0"},"rendered":{"observation":{"canvas":{"x":0,"y":0,"width":1400,"height":1138.984375},"subjects":[{"id":"parent","role":"default","x":556.4854736328125,"y":262.1882629394531,"width":202.60223388671875,"height":85.65078735351562},{"id":"profile","role":"default","x":578.1607666015625,"y":393.5756530761719,"width":218.4365234375,"height":85.38900756835938},{"id":"scenario","role":"default","x":854.9518432617188,"y":524.9935302734375,"width":203.16119384765625,"height":83.4539794921875},{"id":"contracts","role":"default","x":250.80178833007812,"y":524.4171752929688,"width":249.37857055664062,"height":84.13262939453125},{"id":"plans","role":"default","x":522.8282470703125,"y":524.605224609375,"width":256.45050048828125,"height":84.1192626953125},{"id":"methods","role":"default","x":488.3863830566406,"y":655.3339233398438,"width":325.6201477050781,"height":84.178955078125},{"id":"math","role":"default","x":836.8214111328125,"y":655.2754516601562,"width":281.3177490234375,"height":84.17138671875},{"id":"oracle","role":"default","x":807.8474731445312,"y":786.989501953125,"width":254.65985107421875,"height":115.3145751953125},{"id":"closure","role":"default","x":685.6268310546875,"y":949.295166015625,"width":375.088623046875,"height":148.1243896484375},{"id":"ascent","role":"default","x":795.49072265625,"y":131.5850830078125,"width":297.566162109375,"height":85.02334594726562},{"id":"consumer","role":"default","x":854.8197631835938,"y":262.61651611328125,"width":274.73370361328125,"height":85.08016967773438},{"id":"change","role":"default","x":820.156982421875,"y":393.6337585449219,"width":344.8798828125,"height":85.30899047851562}],"relations":["(parent -> profile)[0]","(profile -> scenario)[0]","(parent -> contracts)[0]","(profile -> plans)[0]","(scenario -> methods)[0]","(contracts -> methods)[0]","(plans -> methods)[0]","(math -> oracle)[0]","(methods -> oracle)[0]","(oracle -> closure)[0]","(closure -> ascent)[0]","(ascent -> consumer)[0]","(consumer -> change)[0]","(change -> scenario)[0]"],"headings":[{"role":"title","x":20,"y":20,"width":1360,"height":48},{"role":"question","x":20,"y":68,"width":1360,"height":34}]},"readability":{"minimumTextSize":12,"samples":30,"requiredMinimum":12},"bounds":{"model":{"x":20,"y":110,"width":1360,"height":1008.984375}}}}Source contracts: from Library obligation to scoped evidence?How does a consumer check actual C/C++ code without turning the Library into a Runtime?{"graph":{"id":"model-root","children":[{"id":"parent"},{"id":"profile"},{"id":"scenario"},{"id":"contracts"},{"id":"plans"},{"id":"methods"},{"id":"math"},{"id":"oracle"},{"id":"closure"},{"id":"ascent"},{"id":"consumer"},{"id":"change"}],"layoutOptions":{"elk.spacing.nodeNode":"24","elk.layered.spacing.nodeNodeBetweenLayers":"48","elk.direction":"DOWN"},"edges":[{"id":"(parent -> profile)[0]","sources":["parent"],"targets":["profile"]},{"id":"(profile -> scenario)[0]","sources":["profile"],"targets":["scenario"]},{"id":"(parent -> contracts)[0]","sources":["parent"],"targets":["contracts"]},{"id":"(profile -> plans)[0]","sources":["profile"],"targets":["plans"]},{"id":"(scenario -> methods)[0]","sources":["scenario"],"targets":["methods"]},{"id":"(contracts -> methods)[0]","sources":["contracts"],"targets":["methods"]},{"id":"(plans -> methods)[0]","sources":["plans"],"targets":["methods"]},{"id":"(math -> oracle)[0]","sources":["math"],"targets":["oracle"]},{"id":"(methods -> oracle)[0]","sources":["methods"],"targets":["oracle"]},{"id":"(oracle -> closure)[0]","sources":["oracle"],"targets":["closure"]},{"id":"(closure -> ascent)[0]","sources":["closure"],"targets":["ascent"]},{"id":"(ascent -> consumer)[0]","sources":["ascent"],"targets":["consumer"]},{"id":"(consumer -> change)[0]","sources":["consumer"],"targets":["change"]},{"id":"(change -> scenario)[0]","sources":["change"],"targets":["scenario"]}]},"marker":"arrow-3445a32acd5d"}Parent LibraryModels, rules and obligationsProfile ModuleABI, macros and method boundsConsumer ScenarioReal source, callers and faultsSource contractsPre/postconditions, writes and ownersScheme method declarationsTyped verification plans; no executionDevelopment verificationReal body + callers; bounded CBMC / native testsLean / Quint correspondenceNumeric lemmas / state-order assumptionsIndependent checksLiteral gold and actual source mutantsOccupied refusal / self transferCaptured evidence inputsSource, harness, tools, bounds and configurationEight real-source cases; independent native owner controlsCold dependency installation remains unqualifiedASCENT relationsSupport, counter, pending and reuse premisesExternal consuming ecosystemReview and current-use authorizationChanged source or assumptionsNew capture; retain old witnesses and frozen queries
\ No newline at end of file
diff --git a/docs/90-99-views/90-architecture-views/90.139-source-bound-c-and-cpp-contract-verification.webp b/docs/90-99-views/90-architecture-views/90.139-source-bound-c-and-cpp-contract-verification.webp
index 5b45686..b0e7ba7 100644
Binary files a/docs/90-99-views/90-architecture-views/90.139-source-bound-c-and-cpp-contract-verification.webp and b/docs/90-99-views/90-architecture-views/90.139-source-bound-c-and-cpp-contract-verification.webp differ
diff --git a/docs/90-99-views/90-architecture-views/90.140-flat-declarative-library-boundary.d2 b/docs/90-99-views/90-architecture-views/90.140-flat-declarative-library-boundary.d2
index 9cc7bdf..5ec4042 100644
--- a/docs/90-99-views/90-architecture-views/90.140-flat-declarative-library-boundary.d2
+++ b/docs/90-99-views/90-architecture-views/90.140-flat-declarative-library-boundary.d2
@@ -39,7 +39,9 @@ vars: {d2-config: {data: {figure: |json
"config": "config.ss",
"method-config": "library/source-contracts/config.ss",
"plans": "library/source-contracts/methods.ss",
- "native-case": "t/source-contract-owner-config-test.ss"
+ "native-case": "t/source-contract-owner-config-test.ss",
+ "test-entry": "Justfile",
+ "build-consumer": "t/project-formation-build-test.ss"
},
"basis": {
"captureRef": "design-candidate:90.140-flat-declarative-library-boundary",
@@ -74,9 +76,9 @@ plans: "Source-contract declarations\nConfig: enable + typed settings\nFinal-sco
rules: "ASCENT declarations\nObligations and evidence relations"
build: "Root build.ss\ninit.exports std-make-spec only\nNative build and compiled metadata pass"
sysml: "SysML declarations\nResponsibilities and relationships"
-development: "Development boundary: t/*-test.ss\nActual tools, independent gold and real subjects"
+development: "Development boundary: t/*-test.ss\nSDK env before gxtest initialization\nActual tools, independent gold and real subjects"
external: "External consuming ecosystem\nMarlin / Aitia / other Runtime\nSessions, approval and recovery"
-pending: "Open acceptance gates\nCandidate cohort / full install / CI\nNative recursive defaults and typed language projections\nCurrent whole-product acceptance pending"
+pending: "Open acceptance gates\nCore cold rebuild exceeded 180 seconds\nFull dependency install / candidate cohort\nLinux CI dependency installation unqualified"
example: "User Examples\nC / C++ values in one programs tree\nInternal inheritance stays in Library"
example -> profiles: "recursive defaults; native admission"
package -> selection
diff --git a/docs/90-99-views/90-architecture-views/90.140-flat-declarative-library-boundary.json b/docs/90-99-views/90-architecture-views/90.140-flat-declarative-library-boundary.json
index dd4c94f..b06c58d 100644
--- a/docs/90-99-views/90-architecture-views/90.140-flat-declarative-library-boundary.json
+++ b/docs/90-99-views/90-architecture-views/90.140-flat-declarative-library-boundary.json
@@ -5,11 +5,12 @@
"bun.lock": "641fa6fb5dd7cc87c32d15ea62a71664efe83d06b0f0f3fe8373f58fb130b346",
"config.ss": "3e9865637939ade5b7024295db5a6119df325333e8d8303a16294ef583b18cd2",
"docs/10-19-design/10-architecture/10.148-flat-declarative-library-boundary.org": "9c05b32cb0d8aa82cd1fa624a791aaeb805af23d247b66ed31385266405121d8",
- "docs/10-19-design/10-architecture/10.149-unified-language-engineering-configuration.org": "a775a482eec08d7dc84187d2d63e4b020a3f54b0621b159e8ea0949366ffeac5",
- "docs/90-99-views/90-architecture-views/90.140-flat-declarative-library-boundary.d2": "ead1384c6b69bb494e0379f65579ed9199d648ac160e41f7446c5cec36501429",
+ "docs/10-19-design/10-architecture/10.149-unified-language-engineering-configuration.org": "da4be3befe16528ddf72d0e1dce0a4c510ed5d1e78867abee95c5fb8d14ac6f5",
+ "docs/90-99-views/90-architecture-views/90.140-flat-declarative-library-boundary.d2": "031669952f79ea36c3e54aaa3271b25ccf7fb554ac87ebb10760efc0f6f04a9d",
"examples/programs.ss": "5452aaca51b2df0aefd69b5e7e8ba57f4e016245323023256fcb03f84d49e43d",
"gerbil.pkg": "413236e4c63a6a5dddac316be86998f32b27e45ecfd5d66f38fe96ec646d4c7b",
"init.ss": "964584fb153d68ea2d03f3ca082d80cbcf631ddf61364fc6d18580b05237b688",
+ "Justfile": "6c29bbc212505fb22c959b2c108fa47e63eff076e846645f7cd6edb1ef32291c",
"library/source-contract-profiles/interface.ss": "4ce4d3f31549582cd20e7ff4a17912516f88e5fcb05a56e76666eb7ff1312dac",
"library/source-contracts/config.ss": "1641ede3f3e85e5e64e74c41a7f7a29e7322aa8dccc6034fdf54362807ae9779",
"library/source-contracts/methods.ss": "ecbc50f99dbc8f63e063b6019196d2d7a967922a184ad0f3dd594e5e84ffcb55",
@@ -23,6 +24,7 @@
"packages/render/src/png.ts": "8d1da534a9fe8d8f27fccbf61b7e4ec0e8fd6754970c09c42105381b32b34d54",
"packages/render/src/scene-export.ts": "f5ba1250e1fe5e6c952ada3bc501979e4f9b8a8a0506a62a6e4cebdaf256a217",
"packages/render/src/webp.ts": "67dcfc1f1e333ae933f0f9d48b10640ba11b81fad394ff3361ca9b5f952223e0",
+ "t/project-formation-build-test.ss": "fe91d78754ccb362058fdff6e49aba0c7e44c1488912985b44d544cc1e96331b",
"t/source-contract-owner-config-test.ss": "4546d70c1447fc76c8ecff97efb9085787218514aa08bdd7fcb5e07f889f1220"
},
"receipt": {
@@ -33,10 +35,10 @@
"lossless": true,
"effort": 4
},
- "inputBytes": 640032,
- "outputBytes": 280408
+ "inputBytes": 640565,
+ "outputBytes": 281262
},
- "sha256": "a65e229f986761d1c51d1e408560a99ca47a8cd8fef2d64bc66f77e79b42205a"
+ "sha256": "1c656ef38c0300ff33c26afa6b5aeb09388aebc894f8542314d566b1c3ae3f08"
},
"preferredRaster": "webp",
"pngCompression": {
@@ -46,8 +48,8 @@
"compressionLevel": 9,
"adaptiveFiltering": true
},
- "inputBytes": 640032,
- "outputBytes": 632815,
+ "inputBytes": 640565,
+ "outputBytes": 632708,
"selected": "compressed"
},
"regions": {}
@@ -64,112 +66,112 @@
"x": 0,
"y": 0,
"width": 1400,
- "height": 1298.984375
+ "height": 1299
},
"subjects": [
{
"id": "package",
"role": "default",
- "x": 584.8258666992188,
- "y": 131.19033813476562,
- "width": 217.24951171875,
- "height": 85.65093994140625
+ "x": 585.15771484375,
+ "y": 131.19061279296875,
+ "width": 217.25238037109375,
+ "height": 85.652099609375
},
{
"id": "selection",
"role": "default",
- "x": 587.50146484375,
- "y": 262.5780029296875,
- "width": 215.47796630859375,
- "height": 121.61477661132812
+ "x": 587.8333740234375,
+ "y": 262.5800476074219,
+ "width": 215.48077392578125,
+ "height": 121.61639404296875
},
{
"id": "domains",
"role": "default",
- "x": 339.1335144042969,
- "y": 445.1955261230469,
- "width": 230.80770874023438,
- "height": 83.45413208007812
+ "x": 339.4620361328125,
+ "y": 445.20001220703125,
+ "width": 230.810791015625,
+ "height": 83.45526123046875
},
{
"id": "specialization",
"role": "default",
- "x": 408.1398620605469,
- "y": 588.4171752929688,
- "width": 262.5001525878906,
- "height": 84.1328125
+ "x": 408.46929931640625,
+ "y": 588.423583984375,
+ "width": 262.50360107421875,
+ "height": 84.1339111328125
},
{
"id": "profiles",
"role": "default",
- "x": 818.1651000976562,
- "y": 588.6004638671875,
- "width": 285.45062255859375,
- "height": 116.286865234375
+ "x": 818.5,
+ "y": 588.6068115234375,
+ "width": 285.4544677734375,
+ "height": 116.2884521484375
},
{
"id": "plans",
"role": "default",
- "x": 832.2224731445312,
- "y": 751.3338012695312,
- "width": 257.39154052734375,
- "height": 148.05426025390625
+ "x": 832.5575561523438,
+ "y": 751.3423461914062,
+ "width": 257.39508056640625,
+ "height": 148.0562744140625
},
{
"id": "rules",
"role": "default",
- "x": 284.42803955078125,
- "y": 793.94140625,
- "width": 225.56118774414062,
- "height": 83.87005615234375
+ "x": 284.7558288574219,
+ "y": 793.9505615234375,
+ "width": 225.564208984375,
+ "height": 83.87115478515625
},
{
"id": "build",
"role": "default",
- "x": 593.5250244140625,
- "y": 425.99578857421875,
- "width": 269.74957275390625,
- "height": 115.31475830078125
+ "x": 593.85693359375,
+ "y": 426,
+ "width": 269.753173828125,
+ "height": 115.31634521484375
},
{
"id": "sysml",
"role": "default",
- "x": 307.33856201171875,
- "y": 294.52581787109375,
- "width": 218.69927978515625,
- "height": 83.755126953125
+ "x": 307.6666564941406,
+ "y": 294.5283203125,
+ "width": 218.70217895507812,
+ "height": 83.7562255859375
},
{
"id": "development",
"role": "default",
- "x": 797.33203125,
- "y": 957.258544921875,
- "width": 311.999755859375,
- "height": 85.0057373046875
+ "x": 797.0253295898438,
+ "y": 946.6032104492188,
+ "width": 312.64532470703125,
+ "height": 120.94952392578125
},
{
"id": "external",
"role": "default",
- "x": 269.3357238769531,
- "y": 946.6077270507812,
- "width": 275.6835632324219,
- "height": 121.00811767578125
+ "x": 269.6632995605469,
+ "y": 946.618896484375,
+ "width": 275.6872863769531,
+ "height": 121.009765625
},
{
"id": "pending",
"role": "default",
- "x": 773.3323364257812,
- "y": 1109.624755859375,
- "width": 360.25848388671875,
- "height": 151.124755859375
+ "x": 809.6666870117188,
+ "y": 1109.63818359375,
+ "width": 287.15203857421875,
+ "height": 151.126708984375
},
{
"id": "example",
"role": "default",
- "x": 885.8997802734375,
- "y": 425.4309997558594,
- "width": 243.9129638671875,
- "height": 115.56326293945312
+ "x": 886.235595703125,
+ "y": 425.4352111816406,
+ "width": 243.916259765625,
+ "height": 115.56478881835938
}
],
"relations": [
@@ -211,24 +213,24 @@
},
"readability": {
"minimumTextSize": 12,
- "samples": 38,
+ "samples": 39,
"requiredMinimum": 12
},
- "inputSHA256": "d756bccc4b33d41fca72f7ee2535fef0f8774682d1aaf238d929f3e986e155d7",
+ "inputSHA256": "52c04d0323c28449aa93d8973a1ff6b99899fe65dfc1df733be7af6865da8040",
"scenes": [
{
- "inputSHA256": "777ef5defec905c56b80b24e2a7c2331ee455dd9caea1302e8759dafb8900834",
- "layoutSHA256": "e63a5885f888a01ebc12b9077f050fade5df98a1891c1587c771254cc212162a",
+ "inputSHA256": "8b96a10f10950bc45aefa49be93fd6998fb8461144a9f551493939232dc8dabc",
+ "layoutSHA256": "ddab369f30ec64346f9e5edcf177b95a8bb09909745c5e1f9005d2d364b5424c",
"nodes": 13,
"edges": 14,
- "milliseconds": 729.3841250000005
+ "milliseconds": 500.9772920000005
}
],
"svgSHA256": [
- "b139564be8edad607f3943b11f167d79ee60e51fdffb09600d1b85feaf570701",
- "f6ac725e9a3542525879ea675c949d4b56b4a67c8648b580284f14ebc7af457c"
+ "cb393bed093fbbe3bf252da4163c47a5465f037fa542cdaea252d59a27b9eca4",
+ "1fc9deebce76386549ee45720d9a9b7676a202bf2dd23a447c3e37baec2962b0"
],
- "composedHTMLSHA256": "2a3ab28969f07c7956efa37852517253b4b0c220a9ababf1118045f763c76049",
+ "composedHTMLSHA256": "baa7847099279fed78b9bc9cb78db236e089c6cc176c77bdf6a434837a549ba3",
"dependencies": {
"@fontsource/inter": "5.3.0",
"@fontsource/kalam": "5.3.0",
@@ -242,14 +244,14 @@
"web-worker": "1.5.0"
},
"regionSHA256": {},
- "htmlSHA256": "20e3453330a4393e6801fc862c3557a025515848fd512df3bae6661c7d0a76b3",
+ "htmlSHA256": "3d3553f2c4c27392c6bc800ce1b9d69beeb8b0eefde8372a2fd7b6481ff4b4ec",
"drawing": "roughjs@4.6.6",
"routing": "elkjs@0.12.1",
"assetSHA256": {
- "@fontsource/kalam/files/kalam-latin-700-normal.woff2": "252063af6ade8b9a744cde4ddad0fc21ea53b8ba711eed121a0c2e8610ea9c93",
- "@fontsource/kalam/files/kalam-latin-400-normal.woff2": "954410601a823f37e219f7930b7446f86afa15621326a7078d56fb9c910135cb"
+ "@fontsource/kalam/files/kalam-latin-400-normal.woff2": "954410601a823f37e219f7930b7446f86afa15621326a7078d56fb9c910135cb",
+ "@fontsource/kalam/files/kalam-latin-700-normal.woff2": "252063af6ade8b9a744cde4ddad0fc21ea53b8ba711eed121a0c2e8610ea9c93"
},
- "pngSHA256": "9fd31b8e30f5619234dee8ed571d7c3613f8cb31470fb5b8073dfa63e4a51ebf",
+ "pngSHA256": "480196883d48a6092940bbe687ceaa97635bfbbe9a912be31c570277bab69896",
"browser": "156.0.8078.4",
"width": 2100,
"height": 1949,
@@ -259,15 +261,15 @@
"x": 20,
"y": 110,
"width": 1360,
- "height": 1168.984375
+ "height": 1169
}
}
},
"rasterComparison": {
- "pngBytes": 632815,
- "webpBytes": 280408,
+ "pngBytes": 632708,
+ "webpBytes": 281262,
"decodedPixelsEqual": true,
- "decodedPixelSHA256": "e6b31a9a24cd72b8d8089b9db1d4c42e997052bb3b29c16101239dc06f40ee80",
+ "decodedPixelSHA256": "e60a8fcd823dca0e6ef9432deb8615357c5ae54bec9e2eba07e58fef6423e10b",
"preferredRaster": "webp"
}
}
diff --git a/docs/90-99-views/90-architecture-views/90.140-flat-declarative-library-boundary.png b/docs/90-99-views/90-architecture-views/90.140-flat-declarative-library-boundary.png
index 1c703e9..fbf4f5e 100644
Binary files a/docs/90-99-views/90-architecture-views/90.140-flat-declarative-library-boundary.png and b/docs/90-99-views/90-architecture-views/90.140-flat-declarative-library-boundary.png differ
diff --git a/docs/90-99-views/90-architecture-views/90.140-flat-declarative-library-boundary.svg b/docs/90-99-views/90-architecture-views/90.140-flat-declarative-library-boundary.svg
index 5730c89..33e672b 100644
--- a/docs/90-99-views/90-architecture-views/90.140-flat-declarative-library-boundary.svg
+++ b/docs/90-99-views/90-architecture-views/90.140-flat-declarative-library-boundary.svg
@@ -3,7 +3,7 @@ SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors
SPDX-FileCopyrightText: 2014 Indian Type Foundry (info@indiantypefoundry.com)
SPDX-License-Identifier: LGPL-2.1-or-later AND OFL-1.1
-->
-{"renderer":{"package":"@deterministic-engineering/render","version":"1.0.2","icons":{"capture":"a647d42aa11f4e5e85d0bbf66f483f57f3c4ba3a9536362ed0eaaaae10a89cee","decision":"3535642a5b613372c3fd374151ec90aafa19b64b2d33d10b19162cad07a35c7a","document":"0bf9674a401262da8a646305cab00006954721c07765b9962e0dee1c31d560f7","evidence":"0a91b169aaa644829a054cbb94194efffaf4298f2b6f8fa8c6ec2b7b413a1766","library":"df474fa36a74016b79236fff58a980a8c18c682d1866211776e349a0eb4b2979","model":"0cfd1f9ed3873f556ace725a7b6a251ebe75d7d976567699276f34df36b2443b","obligation":"e76f4d34a7190400446c89e4e7d187762b885808a64a00c99455599d902570c5","pending":"cca7589bc3b1dcdebacb867c6836c6fc166257f05823555a268354ff9bfac00c","question":"dbf231e1568dc37189d5674d73c4bfc58a17eb8ada579b3f03bf2813d33c56f4","reference":"3814c570f79ab294252c36530de464c9364814b797afb862d9c62e728a8660fc","selection":"82b4ab6faf195fea0a891c35268e61c186e93e7c6a9d7967a4f6a73dbf25ae7f"}},"evidence":[],"presentation":{"options":{"elk.direction":"DOWN","elk.layered.spacing.nodeNodeBetweenLayers":"48"},"edgeLabels":false},"drawing":{"mode":"sketch","options":{"seed":29,"roughness":1.3,"strokeWidth":1.2,"fillStyle":"hachure","hachureGap":9,"fillWeight":0.6}},"fonts":[{"family":"Kalam","weight":400,"source":"@fontsource/kalam/files/kalam-latin-400-normal.woff2"},{"family":"Kalam","weight":700,"source":"@fontsource/kalam/files/kalam-latin-700-normal.woff2"}],"palette":{"background":"#FAF7EE","surface":"#FFFDF7","ink":"#283E43","muted":"#63716F","border":"#ADBBB5","accent":"#287F79","secondary":"#946B42","tint":"#EDF4E9","secondaryTint":"#F6EDD8","onAccent":"#FFFFFF","supported":"#237C69","pending":"#9A6C25","conflict":"#A84C60"},"inputSHA256":"d756bccc4b33d41fca72f7ee2535fef0f8774682d1aaf238d929f3e986e155d7","model":{"subjects":[{"id":"package","type":"rectangle","level":1,"label":"gerbil.pkg\nOne AI Agentic Lab dependency"},{"id":"selection","type":"rectangle","level":1,"label":"Root init.ss\nFlat library/\u003cmodule-name>/\nNative tag Profiles and yuanxu!"},{"id":"domains","type":"rectangle","level":1,"label":"Parent domain Modules\nCapacity, lifetime and organization"},{"id":"specialization","type":"rectangle","level":1,"label":"Language-specialized Modules\nRust / Tokio / Rayon correspondence"},{"id":"profiles","type":"rectangle","level":1,"label":"Profile Modules\nprograms / languages / enable / settings\nNative config-defaults + sealed Config Type"},{"id":"plans","type":"rectangle","level":1,"label":"Source-contract declarations\nConfig: enable + typed settings\nFinal-scope plan / disabled refusal\nStep-derived external tool closure"},{"id":"rules","type":"rectangle","level":1,"label":"ASCENT declarations\nObligations and evidence relations"},{"id":"build","type":"rectangle","level":1,"label":"Root build.ss\ninit.exports std-make-spec only\nNative build and compiled metadata pass"},{"id":"sysml","type":"rectangle","level":1,"label":"SysML declarations\nResponsibilities and relationships"},{"id":"development","type":"rectangle","level":1,"label":"Development boundary: t/*-test.ss\nActual tools, independent gold and real subjects"},{"id":"external","type":"rectangle","level":1,"label":"External consuming ecosystem\nMarlin / Aitia / other Runtime\nSessions, approval and recovery"},{"id":"pending","type":"rectangle","level":1,"label":"Open acceptance gates\nCandidate cohort / full install / CI\nNative recursive defaults and typed language projections\nCurrent whole-product acceptance pending"},{"id":"example","type":"rectangle","level":1,"label":"User Examples\nC / C++ values in one programs tree\nInternal inheritance stays in Library"}],"relations":[{"id":"(example -> profiles)[0]","src":"example","dst":"profiles","label":"recursive defaults; native admission","srcArrow":"none","dstArrow":"triangle"},{"id":"(package -> selection)[0]","src":"package","dst":"selection","label":"","srcArrow":"none","dstArrow":"triangle"},{"id":"(selection -> domains)[0]","src":"selection","dst":"domains","label":"","srcArrow":"none","dstArrow":"triangle"},{"id":"(selection -> build)[0]","src":"selection","dst":"build","label":"","srcArrow":"none","dstArrow":"triangle"},{"id":"(sysml -> domains)[0]","src":"sysml","dst":"domains","label":"","srcArrow":"none","dstArrow":"triangle"},{"id":"(domains -> specialization)[0]","src":"domains","dst":"specialization","label":"","srcArrow":"none","dstArrow":"triangle"},{"id":"(domains -> profiles)[0]","src":"domains","dst":"profiles","label":"","srcArrow":"none","dstArrow":"triangle"},{"id":"(profiles -> plans)[0]","src":"profiles","dst":"plans","label":"","srcArrow":"none","dstArrow":"triangle"},{"id":"(domains -> rules)[0]","src":"domains","dst":"rules","label":"","srcArrow":"none","dstArrow":"triangle"},{"id":"(plans -> development)[0]","src":"plans","dst":"development","label":"","srcArrow":"none","dstArrow":"triangle"},{"id":"(rules -> development)[0]","src":"rules","dst":"development","label":"","srcArrow":"none","dstArrow":"triangle"},{"id":"(plans -> external)[0]","src":"plans","dst":"external","label":"declarations","srcArrow":"none","dstArrow":"triangle"},{"id":"(rules -> external)[0]","src":"rules","dst":"external","label":"data contracts","srcArrow":"none","dstArrow":"triangle"},{"id":"(development -> pending)[0]","src":"development","dst":"pending","label":"","srcArrow":"none","dstArrow":"triangle"}]},"view":{"source":"docs/90-99-views/90-architecture-views/90.140-flat-declarative-library-boundary.d2","title":"Declarative Library: ownership and selection","purpose":"architecture","kind":"library-architecture","question":{"subjectRefs":["selection","plans","external"],"ref":"ownership","text":"Which responsibilities belong to the Library, its development tools and consuming ecosystems?","focusRefs":["authority","declaration"]},"basis":{"captureRef":"design-candidate:90.140-flat-declarative-library-boundary","modelRefs":["docs/10-19-design/10-architecture/10.148-flat-declarative-library-boundary.org"],"obligationRefs":[],"evidenceRefs":[]}},"questions":[{"subjectRefs":["selection","plans","external"],"ref":"ownership","text":"Which responsibilities belong to the Library, its development tools and consuming ecosystems?","focusRefs":["authority","declaration"]}],"references":{"authority":"docs/10-19-design/10-architecture/10.148-flat-declarative-library-boundary.org","build":"build.ss","config":"config.ss","config-contract":"docs/10-19-design/10-architecture/10.149-unified-language-engineering-configuration.org","declaration":"docs/90-99-views/90-architecture-views/90.140-flat-declarative-library-boundary.d2","example":"examples/programs.ss","method-config":"library/source-contracts/config.ss","native-case":"t/source-contract-owner-config-test.ss","package":"gerbil.pkg","plans":"library/source-contracts/methods.ss","profiles":"library/source-contract-profiles/interface.ss","program-config":"config.ss","selection":"init.ss"},"sourceSHA256":{"build.ss":"7ecd0d052e15ef7ccdcb595421f18f29a82534bb3c89f0af80cc1532ff683ddc","bun.lock":"641fa6fb5dd7cc87c32d15ea62a71664efe83d06b0f0f3fe8373f58fb130b346","config.ss":"3e9865637939ade5b7024295db5a6119df325333e8d8303a16294ef583b18cd2","docs/10-19-design/10-architecture/10.148-flat-declarative-library-boundary.org":"9c05b32cb0d8aa82cd1fa624a791aaeb805af23d247b66ed31385266405121d8","docs/10-19-design/10-architecture/10.149-unified-language-engineering-configuration.org":"a775a482eec08d7dc84187d2d63e4b020a3f54b0621b159e8ea0949366ffeac5","docs/90-99-views/90-architecture-views/90.140-flat-declarative-library-boundary.d2":"ead1384c6b69bb494e0379f65579ed9199d648ac160e41f7446c5cec36501429","examples/programs.ss":"5452aaca51b2df0aefd69b5e7e8ba57f4e016245323023256fcb03f84d49e43d","gerbil.pkg":"413236e4c63a6a5dddac316be86998f32b27e45ecfd5d66f38fe96ec646d4c7b","init.ss":"964584fb153d68ea2d03f3ca082d80cbcf631ddf61364fc6d18580b05237b688","library/source-contract-profiles/interface.ss":"4ce4d3f31549582cd20e7ff4a17912516f88e5fcb05a56e76666eb7ff1312dac","library/source-contracts/config.ss":"1641ede3f3e85e5e64e74c41a7f7a29e7322aa8dccc6034fdf54362807ae9779","library/source-contracts/methods.ss":"ecbc50f99dbc8f63e063b6019196d2d7a967922a184ad0f3dd594e5e84ffcb55","package.json":"b0c1736c46211bf763696ec088c92281cea4de6dece9644d3b647f5d746dfb53","packages/render/examples/attribution.ts":"58f7914284a69c4ce42db61ec24c06cf9194232ed3402fc7ae12e3ded4187892","packages/render/examples/library-boundary.ts":"8a797e2f1700589373bcc173d3c7b80cfc933fd3b8fdc29b1b6cec87b1a609b5","packages/render/src/diagram.ts":"c0e831979970fc90c418820e4462d2097492811f10c7619dab1469b31194a32b","packages/render/src/export.ts":"52f5eda85f800d16f504556e3dad95ec6441f08bb753c674f5d10146f293967c","packages/render/src/figure.ts":"5e26825463ff0017dbd465ada1048a68994dee17a69bacc13d6806f416ca7972","packages/render/src/model-view.ts":"8a2c575c8c1a2f09770fb4cfdbe6718121a66c4fe8b32c97f7b2d88c9f7a57fc","packages/render/src/png.ts":"8d1da534a9fe8d8f27fccbf61b7e4ec0e8fd6754970c09c42105381b32b34d54","packages/render/src/scene-export.ts":"f5ba1250e1fe5e6c952ada3bc501979e4f9b8a8a0506a62a6e4cebdaf256a217","packages/render/src/webp.ts":"67dcfc1f1e333ae933f0f9d48b10640ba11b81fad394ff3361ca9b5f952223e0","t/source-contract-owner-config-test.ss":"4546d70c1447fc76c8ecff97efb9085787218514aa08bdd7fcb5e07f889f1220"},"rendered":{"observation":{"canvas":{"x":0,"y":0,"width":1400,"height":1298.984375},"subjects":[{"id":"package","role":"default","x":584.8258666992188,"y":131.19033813476562,"width":217.24951171875,"height":85.65093994140625},{"id":"selection","role":"default","x":587.50146484375,"y":262.5780029296875,"width":215.47796630859375,"height":121.61477661132812},{"id":"domains","role":"default","x":339.1335144042969,"y":445.1955261230469,"width":230.80770874023438,"height":83.45413208007812},{"id":"specialization","role":"default","x":408.1398620605469,"y":588.4171752929688,"width":262.5001525878906,"height":84.1328125},{"id":"profiles","role":"default","x":818.1651000976562,"y":588.6004638671875,"width":285.45062255859375,"height":116.286865234375},{"id":"plans","role":"default","x":832.2224731445312,"y":751.3338012695312,"width":257.39154052734375,"height":148.05426025390625},{"id":"rules","role":"default","x":284.42803955078125,"y":793.94140625,"width":225.56118774414062,"height":83.87005615234375},{"id":"build","role":"default","x":593.5250244140625,"y":425.99578857421875,"width":269.74957275390625,"height":115.31475830078125},{"id":"sysml","role":"default","x":307.33856201171875,"y":294.52581787109375,"width":218.69927978515625,"height":83.755126953125},{"id":"development","role":"default","x":797.33203125,"y":957.258544921875,"width":311.999755859375,"height":85.0057373046875},{"id":"external","role":"default","x":269.3357238769531,"y":946.6077270507812,"width":275.6835632324219,"height":121.00811767578125},{"id":"pending","role":"default","x":773.3323364257812,"y":1109.624755859375,"width":360.25848388671875,"height":151.124755859375},{"id":"example","role":"default","x":885.8997802734375,"y":425.4309997558594,"width":243.9129638671875,"height":115.56326293945312}],"relations":["(example -> profiles)[0]","(package -> selection)[0]","(selection -> domains)[0]","(selection -> build)[0]","(sysml -> domains)[0]","(domains -> specialization)[0]","(domains -> profiles)[0]","(profiles -> plans)[0]","(domains -> rules)[0]","(plans -> development)[0]","(rules -> development)[0]","(plans -> external)[0]","(rules -> external)[0]","(development -> pending)[0]"],"headings":[{"role":"title","x":20,"y":20,"width":1360,"height":48},{"role":"question","x":20,"y":68,"width":1360,"height":34}]},"readability":{"minimumTextSize":12,"samples":38,"requiredMinimum":12},"bounds":{"model":{"x":20,"y":110,"width":1360,"height":1168.984375}}}}Declarative Library: ownership and selection?Which responsibilities belong to the Library, its development tools and consuming ecosystems?{"graph":{"id":"model-root","children":[{"id":"package"},{"id":"selection"},{"id":"domains"},{"id":"specialization"},{"id":"profiles"},{"id":"plans"},{"id":"rules"},{"id":"build"},{"id":"sysml"},{"id":"development"},{"id":"external"},{"id":"pending"},{"id":"example"}],"layoutOptions":{"elk.spacing.nodeNode":"24","elk.layered.spacing.nodeNodeBetweenLayers":"48","elk.direction":"DOWN"},"edges":[{"id":"(example -> profiles)[0]","sources":["example"],"targets":["profiles"]},{"id":"(package -> selection)[0]","sources":["package"],"targets":["selection"]},{"id":"(selection -> domains)[0]","sources":["selection"],"targets":["domains"]},{"id":"(selection -> build)[0]","sources":["selection"],"targets":["build"]},{"id":"(sysml -> domains)[0]","sources":["sysml"],"targets":["domains"]},{"id":"(domains -> specialization)[0]","sources":["domains"],"targets":["specialization"]},{"id":"(domains -> profiles)[0]","sources":["domains"],"targets":["profiles"]},{"id":"(profiles -> plans)[0]","sources":["profiles"],"targets":["plans"]},{"id":"(domains -> rules)[0]","sources":["domains"],"targets":["rules"]},{"id":"(plans -> development)[0]","sources":["plans"],"targets":["development"]},{"id":"(rules -> development)[0]","sources":["rules"],"targets":["development"]},{"id":"(plans -> external)[0]","sources":["plans"],"targets":["external"]},{"id":"(rules -> external)[0]","sources":["rules"],"targets":["external"]},{"id":"(development -> pending)[0]","sources":["development"],"targets":["pending"]}]},"marker":"arrow-54b359e5c4fe"}gerbil.pkgOne AI Agentic Lab dependencyRoot init.ssFlat library/<module-name>/Native tag Profiles and yuanxu!Parent domain ModulesCapacity, lifetime and organizationLanguage-specialized ModulesRust / Tokio / Rayon correspondenceProfile Modulesprograms / languages / enable / settingsNative config-defaults + sealed Config TypeSource-contract declarationsConfig: enable + typed settingsFinal-scope plan / disabled refusalStep-derived external tool closureASCENT declarationsObligations and evidence relationsRoot build.ssinit.exports std-make-spec onlyNative build and compiled metadata passSysML declarationsResponsibilities and relationshipsDevelopment boundary: t/*-test.ssActual tools, independent gold and real subjectsExternal consuming ecosystemMarlin / Aitia / other RuntimeSessions, approval and recoveryOpen acceptance gatesCandidate cohort / full install / CINative recursive defaults and typed language projectionsCurrent whole-product acceptance pendingUser ExamplesC / C++ values in one programs treeInternal inheritance stays in Library
\ No newline at end of file
+@font-face{font-family:"Kalam";font-style:normal;font-weight:700;src:url(data:font/woff2;base64,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) format('woff2')}{"renderer":{"package":"@deterministic-engineering/render","version":"1.0.2","icons":{"capture":"a647d42aa11f4e5e85d0bbf66f483f57f3c4ba3a9536362ed0eaaaae10a89cee","decision":"3535642a5b613372c3fd374151ec90aafa19b64b2d33d10b19162cad07a35c7a","document":"0bf9674a401262da8a646305cab00006954721c07765b9962e0dee1c31d560f7","evidence":"0a91b169aaa644829a054cbb94194efffaf4298f2b6f8fa8c6ec2b7b413a1766","library":"df474fa36a74016b79236fff58a980a8c18c682d1866211776e349a0eb4b2979","model":"0cfd1f9ed3873f556ace725a7b6a251ebe75d7d976567699276f34df36b2443b","obligation":"e76f4d34a7190400446c89e4e7d187762b885808a64a00c99455599d902570c5","pending":"cca7589bc3b1dcdebacb867c6836c6fc166257f05823555a268354ff9bfac00c","question":"dbf231e1568dc37189d5674d73c4bfc58a17eb8ada579b3f03bf2813d33c56f4","reference":"3814c570f79ab294252c36530de464c9364814b797afb862d9c62e728a8660fc","selection":"82b4ab6faf195fea0a891c35268e61c186e93e7c6a9d7967a4f6a73dbf25ae7f"}},"evidence":[],"presentation":{"options":{"elk.direction":"DOWN","elk.layered.spacing.nodeNodeBetweenLayers":"48"},"edgeLabels":false},"drawing":{"mode":"sketch","options":{"seed":29,"roughness":1.3,"strokeWidth":1.2,"fillStyle":"hachure","hachureGap":9,"fillWeight":0.6}},"fonts":[{"family":"Kalam","weight":400,"source":"@fontsource/kalam/files/kalam-latin-400-normal.woff2"},{"family":"Kalam","weight":700,"source":"@fontsource/kalam/files/kalam-latin-700-normal.woff2"}],"palette":{"background":"#FAF7EE","surface":"#FFFDF7","ink":"#283E43","muted":"#63716F","border":"#ADBBB5","accent":"#287F79","secondary":"#946B42","tint":"#EDF4E9","secondaryTint":"#F6EDD8","onAccent":"#FFFFFF","supported":"#237C69","pending":"#9A6C25","conflict":"#A84C60"},"inputSHA256":"52c04d0323c28449aa93d8973a1ff6b99899fe65dfc1df733be7af6865da8040","model":{"subjects":[{"id":"package","type":"rectangle","level":1,"label":"gerbil.pkg\nOne AI Agentic Lab dependency"},{"id":"selection","type":"rectangle","level":1,"label":"Root init.ss\nFlat library/\u003cmodule-name>/\nNative tag Profiles and yuanxu!"},{"id":"domains","type":"rectangle","level":1,"label":"Parent domain Modules\nCapacity, lifetime and organization"},{"id":"specialization","type":"rectangle","level":1,"label":"Language-specialized Modules\nRust / Tokio / Rayon correspondence"},{"id":"profiles","type":"rectangle","level":1,"label":"Profile Modules\nprograms / languages / enable / settings\nNative config-defaults + sealed Config Type"},{"id":"plans","type":"rectangle","level":1,"label":"Source-contract declarations\nConfig: enable + typed settings\nFinal-scope plan / disabled refusal\nStep-derived external tool closure"},{"id":"rules","type":"rectangle","level":1,"label":"ASCENT declarations\nObligations and evidence relations"},{"id":"build","type":"rectangle","level":1,"label":"Root build.ss\ninit.exports std-make-spec only\nNative build and compiled metadata pass"},{"id":"sysml","type":"rectangle","level":1,"label":"SysML declarations\nResponsibilities and relationships"},{"id":"development","type":"rectangle","level":1,"label":"Development boundary: t/*-test.ss\nSDK env before gxtest initialization\nActual tools, independent gold and real subjects"},{"id":"external","type":"rectangle","level":1,"label":"External consuming ecosystem\nMarlin / Aitia / other Runtime\nSessions, approval and recovery"},{"id":"pending","type":"rectangle","level":1,"label":"Open acceptance gates\nCore cold rebuild exceeded 180 seconds\nFull dependency install / candidate cohort\nLinux CI dependency installation unqualified"},{"id":"example","type":"rectangle","level":1,"label":"User Examples\nC / C++ values in one programs tree\nInternal inheritance stays in Library"}],"relations":[{"id":"(example -> profiles)[0]","src":"example","dst":"profiles","label":"recursive defaults; native admission","srcArrow":"none","dstArrow":"triangle"},{"id":"(package -> selection)[0]","src":"package","dst":"selection","label":"","srcArrow":"none","dstArrow":"triangle"},{"id":"(selection -> domains)[0]","src":"selection","dst":"domains","label":"","srcArrow":"none","dstArrow":"triangle"},{"id":"(selection -> build)[0]","src":"selection","dst":"build","label":"","srcArrow":"none","dstArrow":"triangle"},{"id":"(sysml -> domains)[0]","src":"sysml","dst":"domains","label":"","srcArrow":"none","dstArrow":"triangle"},{"id":"(domains -> specialization)[0]","src":"domains","dst":"specialization","label":"","srcArrow":"none","dstArrow":"triangle"},{"id":"(domains -> profiles)[0]","src":"domains","dst":"profiles","label":"","srcArrow":"none","dstArrow":"triangle"},{"id":"(profiles -> plans)[0]","src":"profiles","dst":"plans","label":"","srcArrow":"none","dstArrow":"triangle"},{"id":"(domains -> rules)[0]","src":"domains","dst":"rules","label":"","srcArrow":"none","dstArrow":"triangle"},{"id":"(plans -> development)[0]","src":"plans","dst":"development","label":"","srcArrow":"none","dstArrow":"triangle"},{"id":"(rules -> development)[0]","src":"rules","dst":"development","label":"","srcArrow":"none","dstArrow":"triangle"},{"id":"(plans -> external)[0]","src":"plans","dst":"external","label":"declarations","srcArrow":"none","dstArrow":"triangle"},{"id":"(rules -> external)[0]","src":"rules","dst":"external","label":"data contracts","srcArrow":"none","dstArrow":"triangle"},{"id":"(development -> pending)[0]","src":"development","dst":"pending","label":"","srcArrow":"none","dstArrow":"triangle"}]},"view":{"source":"docs/90-99-views/90-architecture-views/90.140-flat-declarative-library-boundary.d2","title":"Declarative Library: ownership and selection","purpose":"architecture","kind":"library-architecture","question":{"subjectRefs":["selection","plans","external"],"ref":"ownership","text":"Which responsibilities belong to the Library, its development tools and consuming ecosystems?","focusRefs":["authority","declaration"]},"basis":{"captureRef":"design-candidate:90.140-flat-declarative-library-boundary","modelRefs":["docs/10-19-design/10-architecture/10.148-flat-declarative-library-boundary.org"],"obligationRefs":[],"evidenceRefs":[]}},"questions":[{"subjectRefs":["selection","plans","external"],"ref":"ownership","text":"Which responsibilities belong to the Library, its development tools and consuming ecosystems?","focusRefs":["authority","declaration"]}],"references":{"authority":"docs/10-19-design/10-architecture/10.148-flat-declarative-library-boundary.org","build":"build.ss","build-consumer":"t/project-formation-build-test.ss","config":"config.ss","config-contract":"docs/10-19-design/10-architecture/10.149-unified-language-engineering-configuration.org","declaration":"docs/90-99-views/90-architecture-views/90.140-flat-declarative-library-boundary.d2","example":"examples/programs.ss","method-config":"library/source-contracts/config.ss","native-case":"t/source-contract-owner-config-test.ss","package":"gerbil.pkg","plans":"library/source-contracts/methods.ss","profiles":"library/source-contract-profiles/interface.ss","program-config":"config.ss","selection":"init.ss","test-entry":"Justfile"},"sourceSHA256":{"build.ss":"7ecd0d052e15ef7ccdcb595421f18f29a82534bb3c89f0af80cc1532ff683ddc","bun.lock":"641fa6fb5dd7cc87c32d15ea62a71664efe83d06b0f0f3fe8373f58fb130b346","config.ss":"3e9865637939ade5b7024295db5a6119df325333e8d8303a16294ef583b18cd2","docs/10-19-design/10-architecture/10.148-flat-declarative-library-boundary.org":"9c05b32cb0d8aa82cd1fa624a791aaeb805af23d247b66ed31385266405121d8","docs/10-19-design/10-architecture/10.149-unified-language-engineering-configuration.org":"da4be3befe16528ddf72d0e1dce0a4c510ed5d1e78867abee95c5fb8d14ac6f5","docs/90-99-views/90-architecture-views/90.140-flat-declarative-library-boundary.d2":"031669952f79ea36c3e54aaa3271b25ccf7fb554ac87ebb10760efc0f6f04a9d","examples/programs.ss":"5452aaca51b2df0aefd69b5e7e8ba57f4e016245323023256fcb03f84d49e43d","gerbil.pkg":"413236e4c63a6a5dddac316be86998f32b27e45ecfd5d66f38fe96ec646d4c7b","init.ss":"964584fb153d68ea2d03f3ca082d80cbcf631ddf61364fc6d18580b05237b688","Justfile":"6c29bbc212505fb22c959b2c108fa47e63eff076e846645f7cd6edb1ef32291c","library/source-contract-profiles/interface.ss":"4ce4d3f31549582cd20e7ff4a17912516f88e5fcb05a56e76666eb7ff1312dac","library/source-contracts/config.ss":"1641ede3f3e85e5e64e74c41a7f7a29e7322aa8dccc6034fdf54362807ae9779","library/source-contracts/methods.ss":"ecbc50f99dbc8f63e063b6019196d2d7a967922a184ad0f3dd594e5e84ffcb55","package.json":"b0c1736c46211bf763696ec088c92281cea4de6dece9644d3b647f5d746dfb53","packages/render/examples/attribution.ts":"58f7914284a69c4ce42db61ec24c06cf9194232ed3402fc7ae12e3ded4187892","packages/render/examples/library-boundary.ts":"8a797e2f1700589373bcc173d3c7b80cfc933fd3b8fdc29b1b6cec87b1a609b5","packages/render/src/diagram.ts":"c0e831979970fc90c418820e4462d2097492811f10c7619dab1469b31194a32b","packages/render/src/export.ts":"52f5eda85f800d16f504556e3dad95ec6441f08bb753c674f5d10146f293967c","packages/render/src/figure.ts":"5e26825463ff0017dbd465ada1048a68994dee17a69bacc13d6806f416ca7972","packages/render/src/model-view.ts":"8a2c575c8c1a2f09770fb4cfdbe6718121a66c4fe8b32c97f7b2d88c9f7a57fc","packages/render/src/png.ts":"8d1da534a9fe8d8f27fccbf61b7e4ec0e8fd6754970c09c42105381b32b34d54","packages/render/src/scene-export.ts":"f5ba1250e1fe5e6c952ada3bc501979e4f9b8a8a0506a62a6e4cebdaf256a217","packages/render/src/webp.ts":"67dcfc1f1e333ae933f0f9d48b10640ba11b81fad394ff3361ca9b5f952223e0","t/project-formation-build-test.ss":"fe91d78754ccb362058fdff6e49aba0c7e44c1488912985b44d544cc1e96331b","t/source-contract-owner-config-test.ss":"4546d70c1447fc76c8ecff97efb9085787218514aa08bdd7fcb5e07f889f1220"},"rendered":{"observation":{"canvas":{"x":0,"y":0,"width":1400,"height":1299},"subjects":[{"id":"package","role":"default","x":585.15771484375,"y":131.19061279296875,"width":217.25238037109375,"height":85.652099609375},{"id":"selection","role":"default","x":587.8333740234375,"y":262.5800476074219,"width":215.48077392578125,"height":121.61639404296875},{"id":"domains","role":"default","x":339.4620361328125,"y":445.20001220703125,"width":230.810791015625,"height":83.45526123046875},{"id":"specialization","role":"default","x":408.46929931640625,"y":588.423583984375,"width":262.50360107421875,"height":84.1339111328125},{"id":"profiles","role":"default","x":818.5,"y":588.6068115234375,"width":285.4544677734375,"height":116.2884521484375},{"id":"plans","role":"default","x":832.5575561523438,"y":751.3423461914062,"width":257.39508056640625,"height":148.0562744140625},{"id":"rules","role":"default","x":284.7558288574219,"y":793.9505615234375,"width":225.564208984375,"height":83.87115478515625},{"id":"build","role":"default","x":593.85693359375,"y":426,"width":269.753173828125,"height":115.31634521484375},{"id":"sysml","role":"default","x":307.6666564941406,"y":294.5283203125,"width":218.70217895507812,"height":83.7562255859375},{"id":"development","role":"default","x":797.0253295898438,"y":946.6032104492188,"width":312.64532470703125,"height":120.94952392578125},{"id":"external","role":"default","x":269.6632995605469,"y":946.618896484375,"width":275.6872863769531,"height":121.009765625},{"id":"pending","role":"default","x":809.6666870117188,"y":1109.63818359375,"width":287.15203857421875,"height":151.126708984375},{"id":"example","role":"default","x":886.235595703125,"y":425.4352111816406,"width":243.916259765625,"height":115.56478881835938}],"relations":["(example -> profiles)[0]","(package -> selection)[0]","(selection -> domains)[0]","(selection -> build)[0]","(sysml -> domains)[0]","(domains -> specialization)[0]","(domains -> profiles)[0]","(profiles -> plans)[0]","(domains -> rules)[0]","(plans -> development)[0]","(rules -> development)[0]","(plans -> external)[0]","(rules -> external)[0]","(development -> pending)[0]"],"headings":[{"role":"title","x":20,"y":20,"width":1360,"height":48},{"role":"question","x":20,"y":68,"width":1360,"height":34}]},"readability":{"minimumTextSize":12,"samples":39,"requiredMinimum":12},"bounds":{"model":{"x":20,"y":110,"width":1360,"height":1169}}}}Declarative Library: ownership and selection?Which responsibilities belong to the Library, its development tools and consuming ecosystems?{"graph":{"id":"model-root","children":[{"id":"package"},{"id":"selection"},{"id":"domains"},{"id":"specialization"},{"id":"profiles"},{"id":"plans"},{"id":"rules"},{"id":"build"},{"id":"sysml"},{"id":"development"},{"id":"external"},{"id":"pending"},{"id":"example"}],"layoutOptions":{"elk.spacing.nodeNode":"24","elk.layered.spacing.nodeNodeBetweenLayers":"48","elk.direction":"DOWN"},"edges":[{"id":"(example -> profiles)[0]","sources":["example"],"targets":["profiles"]},{"id":"(package -> selection)[0]","sources":["package"],"targets":["selection"]},{"id":"(selection -> domains)[0]","sources":["selection"],"targets":["domains"]},{"id":"(selection -> build)[0]","sources":["selection"],"targets":["build"]},{"id":"(sysml -> domains)[0]","sources":["sysml"],"targets":["domains"]},{"id":"(domains -> specialization)[0]","sources":["domains"],"targets":["specialization"]},{"id":"(domains -> profiles)[0]","sources":["domains"],"targets":["profiles"]},{"id":"(profiles -> plans)[0]","sources":["profiles"],"targets":["plans"]},{"id":"(domains -> rules)[0]","sources":["domains"],"targets":["rules"]},{"id":"(plans -> development)[0]","sources":["plans"],"targets":["development"]},{"id":"(rules -> development)[0]","sources":["rules"],"targets":["development"]},{"id":"(plans -> external)[0]","sources":["plans"],"targets":["external"]},{"id":"(rules -> external)[0]","sources":["rules"],"targets":["external"]},{"id":"(development -> pending)[0]","sources":["development"],"targets":["pending"]}]},"marker":"arrow-54b359e5c4fe"}gerbil.pkgOne AI Agentic Lab dependencyRoot init.ssFlat library/<module-name>/Native tag Profiles and yuanxu!Parent domain ModulesCapacity, lifetime and organizationLanguage-specialized ModulesRust / Tokio / Rayon correspondenceProfile Modulesprograms / languages / enable / settingsNative config-defaults + sealed Config TypeSource-contract declarationsConfig: enable + typed settingsFinal-scope plan / disabled refusalStep-derived external tool closureASCENT declarationsObligations and evidence relationsRoot build.ssinit.exports std-make-spec onlyNative build and compiled metadata passSysML declarationsResponsibilities and relationshipsDevelopment boundary: t/*-test.ssSDK env before gxtest initializationActual tools, independent gold and real subjectsExternal consuming ecosystemMarlin / Aitia / other RuntimeSessions, approval and recoveryOpen acceptance gatesCore cold rebuild exceeded 180 secondsFull dependency install / candidate cohortLinux CI dependency installation unqualifiedUser ExamplesC / C++ values in one programs treeInternal inheritance stays in Library
\ No newline at end of file
diff --git a/docs/90-99-views/90-architecture-views/90.140-flat-declarative-library-boundary.webp b/docs/90-99-views/90-architecture-views/90.140-flat-declarative-library-boundary.webp
index 31b3ff3..23b0d72 100644
Binary files a/docs/90-99-views/90-architecture-views/90.140-flat-declarative-library-boundary.webp and b/docs/90-99-views/90-architecture-views/90.140-flat-declarative-library-boundary.webp differ
diff --git a/t/project-formation-build-test.ss b/t/project-formation-build-test.ss
index ae408c6..f7e340b 100644
--- a/t/project-formation-build-test.ss
+++ b/t/project-formation-build-test.ss
@@ -2,19 +2,28 @@
;;;
;;; SPDX-License-Identifier: LGPL-2.1-or-later
-;;; Build through the package-root init using the inherited Core public API.
-(import :std/test :clan/poo/object
- (only-in "../init.ss" deterministic-engineering.init.exports))
+;;; Consume the compiled package entry; the native root build checks its source.
+(import :std/test
+ :clan/poo/object
+ (only-in :deterministic-engineering/init
+ deterministic-engineering.init.exports))
(export project-formation-build-test)
-(def selected-roots '("profiles/library-formation"))
+(def selected-roots '("config"))
(def project-formation-build-test
(test-suite "Package-root build projection"
(test-case "package build retains the declared Profile and specification"
- (def spec ((.get deterministic-engineering.init.exports std-make-spec) selected-roots))
- (check-equal? (and (member '(gxc: "profiles/library-formation") spec) #t) #t)
- (check-equal? (eq? spec
- ((.get deterministic-engineering.init.exports std-make-spec) selected-roots)) #t))
+ (def project (.get deterministic-engineering.init.exports std-make-spec))
+ (def spec (project selected-roots))
+ (check-equal?
+ (and (member '(gxc: "library/library-formation-profiles/objects") spec) #t)
+ #t)
+ ;; Config is also selected by the Profile dependency graph; retain one
+ ;; canonical native target rather than a second ordinary source row.
+ (check-equal?
+ (length (filter (lambda (target) (equal? target '(gxc: "config"))) spec))
+ 1)
+ (check-equal? (eq? spec (project selected-roots)) #t))
(test-case "the same init epoch cannot switch retained ordinary roots"
(check-exception
((.get deterministic-engineering.init.exports std-make-spec)
- '("profiles/library-formation" "profiles/gateway")) error?))))
+ '("config" "library/library-formation-profiles/objects")) error?))))