diff --git a/.github/workflows/render.yml b/.github/workflows/render.yml new file mode 100644 index 0000000..ecc8304 --- /dev/null +++ b/.github/workflows/render.yml @@ -0,0 +1,52 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + +name: Deterministic Engineering Render +on: + pull_request: + paths: + - 'packages/render/**' + - 'docs/90-99-views/90-architecture-views/**' + - '.github/workflows/render.yml' + push: + branches: [main] + paths: + - 'packages/render/**' + - 'docs/90-99-views/90-architecture-views/**' + - '.github/workflows/render.yml' +permissions: + contents: read +jobs: + renderer: + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest] + runs-on: ${{ matrix.os }} + timeout-minutes: 10 + steps: + - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 + - uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 + with: + bun-version: 1.3.11 + - run: bun install --frozen-lockfile + working-directory: packages/render + - run: bunx playwright install --with-deps chromium + working-directory: packages/render + - run: bun run typecheck + working-directory: packages/render + - run: bun test ./test + working-directory: packages/render + - run: bun run test:export + working-directory: packages/render + - run: bun test ./examples/test + working-directory: packages/render + - run: bun run example:case + working-directory: packages/render + - run: bun run example:compare + working-directory: packages/render + - run: bun run example:overviews + working-directory: packages/render + - run: bun run example:design + working-directory: packages/render diff --git a/.github/workflows/reuse.yml b/.github/workflows/reuse.yml new file mode 100644 index 0000000..47d89fb --- /dev/null +++ b/.github/workflows/reuse.yml @@ -0,0 +1,14 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# SPDX-License-Identifier: LGPL-2.1-or-later + +name: REUSE licensing +on: [push, pull_request] +permissions: + contents: read +jobs: + reuse: + runs-on: ubuntu-latest + timeout-minutes: 5 + steps: + - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 + - uses: fsfe/reuse-action@676e2d560c9a403aa252096d99fcab3e1132b0f5 diff --git a/.gitignore b/.gitignore index f390869..2b9f868 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + # Local upstream research checkouts. .data/ # Local Gerbil package links and generated package state. @@ -13,3 +17,7 @@ # Python transport caches are local artifacts. __pycache__/ *.pyc + +# TypeScript packages and local rendering outputs. +node_modules/ +.cache/ diff --git a/Justfile b/Justfile index 80f7517..4c0119e 100644 --- a/Justfile +++ b/Justfile @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + # Native package operations; every Scheme process is fenced before importing. set shell := ["bash", "-eu", "-o", "pipefail", "-c"] diff --git a/LICENSES/LGPL-2.1-or-later.txt b/LICENSES/LGPL-2.1-or-later.txt new file mode 100644 index 0000000..c6487f4 --- /dev/null +++ b/LICENSES/LGPL-2.1-or-later.txt @@ -0,0 +1,176 @@ +GNU LESSER GENERAL PUBLIC LICENSE + +Version 2.1, February 1999 + +Copyright (C) 1991, 1999 Free Software Foundation, Inc. +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] + +Preamble + +The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. + +This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. + +When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. + +To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. + +For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. + +We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. + +To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. + +Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. + +Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. + +When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. + +We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. + +For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. + +In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. + +Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. + +The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. + +GNU LESSER GENERAL PUBLIC LICENSE +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + +0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". + +A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. + +The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) + +"Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. + +Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. + +1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. + +You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. + +(For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. + +3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. + +Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. + +This option is useful when you wish to copy part of the code of the Library into a program that is not a library. + +4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. + +If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. + +5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. + +However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. + +When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. + +If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) + +Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. + +6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. + +You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: + + a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. + + e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. + +For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. + +It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. + +7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. + + b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. + +8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. + +9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. + +10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. + +11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. + +This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. + +12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. + +13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. + +14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. + +NO WARRANTY + +15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +END OF TERMS AND CONDITIONS + +How to Apply These Terms to Your New Libraries + +If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). + +To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. + + one line to give the library's name and an idea of what it does. + Copyright (C) year name of author + + This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: + +Yoyodyne, Inc., hereby disclaims all copyright interest in +the library `Frob' (a library for tweaking knobs) written +by James Random Hacker. + +signature of Ty Coon, 1 April 1990 +Ty Coon, President of Vice +That's all there is to it! diff --git a/LICENSES/OFL-1.1.txt b/LICENSES/OFL-1.1.txt new file mode 100644 index 0000000..6fe84ee --- /dev/null +++ b/LICENSES/OFL-1.1.txt @@ -0,0 +1,43 @@ +SIL OPEN FONT LICENSE + +Version 1.1 - 26 February 2007 + +PREAMBLE + +The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others. + +The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives. + +DEFINITIONS + +"Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the copyright statement(s). + +"Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, or substituting — in part or in whole — any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. + +"Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS + +Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission. + +5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. + +TERMINATION + +This license becomes null and void if any of the above conditions are not met. + +DISCLAIMER + +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/LICENSING.org b/LICENSING.org new file mode 100644 index 0000000..8634067 --- /dev/null +++ b/LICENSING.org @@ -0,0 +1,23 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# SPDX-License-Identifier: LGPL-2.1-or-later + +#+title: Copyright and REUSE + +This repository uses REUSE SPDX file-level licensing. The default project license +is LGPL-2.1-or-later, as confirmed by the project owner; the package declaration and file headers +use that same or-later grant. Project-owned copyright notices identify +hardenedlinux Linux Team and Contributors. Third-party font notices retain their +actual authors. See [[file:docs/10-19-design/10-architecture/10.146-taste-selection-and-reuse.org][the provenance audit in 10.146]] for the corrected concurrency +test header; an existing header alone is not evidence of an upstream code origin. + +Comment-capable files carry SPDX headers in their own comment syntax. Strict JSON +and binary PNG cannot contain source comments and use adjacent .license files. +License texts are in LICENSES; those canonical texts need no extra header. + +Historical D2 exports embedding Source Sans Pro retain Adobe's 2010–2018 notice +and OFL-1.1. Current exports embedding Inter or Kalam retain their respective +notices. SPDX annotations are written before generated HTML/SVG fingerprints; +changing a historical export does not make its old receipt current evidence. + +Run the official REUSE CLI: reuse lint. CI runs the official reuse-action. +Do not put blanket override rules over third-party or mixed-license files. diff --git a/README.org b/README.org index a39c3ce..ff73fa8 100644 --- a/README.org +++ b/README.org @@ -1,515 +1,233 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: Deterministic Engineering -#+SUBTITLE: An extensible, verifiable, reproducible engineering design Library +#+SUBTITLE: Reusable engineering knowledge, checked project choices, traceable views #+LANGUAGE: en #+OPTIONS: toc:2 num:nil -#+STARTUP: overview -#+FILETAGS: :architecture:design: -* Engineering ownership and native drivers +* Purpose +:PROPERTIES: +:CUSTOM_ID: purpose +:END: + +Deterministic Engineering is a Library for organizing engineering work around +explicit Questions, models, obligations, methods and evidence. A downstream +repository selects reusable definitions, binds its own project inputs and keeps +its architecture, documents and decisions associated with the checks behind them. + +Scheme/POO owns the engineering declarations and composition. ASCENT answers +declared relational questions. Rust, QNT, Lean and SysML provide selected method +capabilities. The TypeScript render package presents the selected model and +source context through static D2, HTML, SVG and PNG artifacts. + +* Architecture at a glance +This is the engineering organization used by this repository: the Library +publishes reusable definitions, a Profile selects them, and a Scenario binds +actual project inputs. The project boundary owns its architecture model, Org +artifacts and decisions. The complete overview includes the numbered purpose, +core architecture, independent boundaries and project artifacts, followed by +current source observations and open gaps. Arrows point to dependencies. + +[[file:docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-sketchbook.png]] + +[[file:docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-sketchbook-detail.png][Ownership component detail]] · [[file:docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture.d2][Questions and editable D2]] · [[file:project.sysml][Project SysML]] + +Selected Rust, QNT, Lean and SysML methods consume the project's bound inputs +and retain their result semantics and source associations. ASCENT derives answers +from declared facts and rules; Aitia owns independent policy-bound review. +The TS Library presents these models and associations. Rendering does not grant +evidence or review authority. This Case currently remains =capture-blocked=. + +* Component: Library, Profile and Scenario +| Part | Owns | Project use | +|------+-------+-------------| +| Library | Reusable models, obligations, method bindings, policies and contracts | Publishes definitions and their identities | +| Profile | Model/parent selection, two policies, methods, catalog and mapping choices | Selects published definitions without copying their ownership | +| Scenario | Repository inputs, origins, associations and capture preparation | Binds the selected definitions to one project use | +| Project | Confirmed intent, responsibility and use scope | Composes the selected Profile and Scenario | + +The source contracts and declarations are authoritative. Version identity +is read from its owning declaration or package metadata, not from a namespace, +diagram or duplicated version table. + +* Component: repository dependencies :PROPERTIES: :CUSTOM_ID: engineering-ownership :END: -The repository is organized by engineering responsibility. Modules are the -native loading/composition mechanism, not a top-level category or directory. -The authoritative layout is: - -#+BEGIN_EXAMPLE -library/ - concurrency/ Shared design declarations and generic obligations - resource-control/backpressure-memory/tokio-rayon/ - Native specialization Module, model contracts and SysML - project-organization/ Engineering organization models - drivers/ - evidence/ Scheme driver over native ASCENT evidence - project-formation/ Scheme organization/acquisition driver and schemas - rust-resources/ Scheme method bindings, execution and evidence driver -languages-engineering/ - rust/concurrency/resource-control/backpressure-memory/ - Cargo.toml / Cargo.lock Rust crate metadata and dependency lock - src/ Rust source only - go/ Go engineering scope; implementation not yet admitted -profiles/ Independent workload and design selections -scenarios/ Application composition, including the gateway example -projects/ Actual SDLC consumers -#+END_EXAMPLE - -Library Scheme code maintains framework/design drivers and reusable engineering -knowledge. Authored Rust specialization belongs to the concurrency Library; -its method driver selects that admitted Module and invokes the actual tools. -=languages-engineering//= contains the target-language engineering -project. Rust source and Cargo inputs do not become Scheme Modules. -The implementation language of a tool does not determine the language it models. - -=init.ss= exposes Scheme-owned =Library= and =Scenarios= through explicit native -paths. The Rust driver is selected from Library; the Rust crate is an input asset. -The former local =modules/= directory and =Modules= namespace are removed; -there are no forwarding files or compatibility aliases. - -Structured wire/data contracts use Yuanxu's existing JSON Schema compiler and -its native Type/Contract diagnostics. POO still owns inheritance, callable -signatures and nominal owner handles; JSON Schema does not encode those handles. -The repository-input Schema now drives acquisition shape and bound checks. -Filesystem custody, traversal and currentness remain with the native source owner. - -OpenSysML is a modeling driver reached through its public SDK/API capabilities. -Its Go API supports in-process parsing/diagnostics/symbols/evaluation/instantiation; -verification, edits and Query require a surface that actually advertises them. -No local SysML parser, text-verdict decoder or replacement model runtime is added. -The current SDK study is not an executed SDK integration result. - -Historical documents preserve their original source/evidence paths. The new -ownership map supersedes those paths for current development; moving source -files requires fresh capture, never relabeling old evidence. -See [[file:docs/10-19-design/10-architecture/10.137-domain-owned-catalogs-and-native-drivers.org][10.137]] and its paired D2 view for the audited model/driver boundary. - -* Package and development entrypoints - -[[file:docs/10-19-design/10-architecture/10.138-native-package-cohort-and-ci-provenance.org][10.138]] records SDK-owned dependency restoration, transitive manifest refresh, -accepted root metadata/tests and the separate open Aitia cold-build CI gate. -[[file:docs/10-19-design/10-architecture/10.139-native-cohort-source-acquisition.org][10.139]] follows the grouped owner upgrade and native source-acquisition boundary. - - -The root [[file:gerbil.pkg][gerbil.pkg]] directly selects Agentic AI Lab and Yuanxu. The product -owns its Parser, Orgize and ASCENT pins; their declared closure selects the same -Yuanxu revision, which owns its POO dependency. Gerbil owns checkout/tag updates, -installation, manifest generation, package environments and build dispatch. -[[file:docs/10-19-design/10-architecture/10.121-native-dependency-cohort-and-expression-alignment.org][10.121]] records the current cohort, native entrypoints and qualification limits. +<> +The arrows below describe responsibilities and dependencies, not execution order. +The README uses one sketchbook visual language. Other styles remain available through +the [[file:packages/render/README.org][render package]] and its declared D2 variants. +Aitia's end-to-end review integration remains a target boundary for this Case. + +[[file:docs/90-99-views/90-architecture-views/90.135-library-project-architecture.svg][Detailed repository dependency diagram]] + +[[file:docs/90-99-views/90-architecture-views/90.135-library-project-architecture.d2][Editable D2]] · [[file:project.sysml][Project SysML model]] · [[file:docs/10-19-design/10-architecture/10.137-domain-owned-catalogs-and-native-drivers.org][Engineering ownership]] + +| Source | Responsibility | +|--------+----------------| +| [[file:library/][library/]] | Domain definitions and Scheme drivers, including project organization and concurrency/resource control | +| [[file:profiles/][profiles/]] | Independent project and workload choices | +| [[file:scenarios/][scenarios/]] | Application bindings, input acquisition and source adapters | +| [[file:projects/][projects/]] | Actual project entrypoints and project test policy | +| [[file:languages-engineering/][languages-engineering/]] | Target-language projects and source, including Rust/Cargo inputs | +| [[file:packages/render/][packages/render/]] | Functional static-rendering package and optional OpenSysML SDK projection | +| [[file:packages/render/examples/][packages/render/examples/]] | Package-owned render cases and domain-specific compositions | +| [[file:docs/][docs/]] | Org design arguments, D2 projections, decisions and candidate image snapshots | + +The root [[file:init.ss][init.ss]] uses Yuanxu's declared module loading. The +[[file:build.ss][build.ss]] consumes declared public roots. This repository reuses +POO/Core/Flow/module and contract mechanisms; it does not define another package +loader or model runtime. + +* Engineering workflow +This diagram expresses the intended integration and its current stop. The actual +[[file:scenarios/project-formation/func.ss][capture preparation source]] still returns +=capture-blocked= and =capture = #f= for DE-CASE-01. A diagram or successful render +does not issue a capture, accepted query view, review result or authorization. + +[[file:docs/90-99-views/90-architecture-views/90.02-agent-evidence-loop.svg]] + +[[file:docs/90-99-views/90-architecture-views/90.02-agent-evidence-loop.d2][Editable D2]] · [[file:docs/10-19-design/10-architecture/10.31-architecture-document-and-decision-contracts.org][Architecture/document/decision contracts]] + +Methods and content checks must keep their actual inputs, result semantics, +source/revision associations and open findings. ASCENT reasoning consumes explicit +facts and rules; support does not grant execution authority. Aitia review and +actual publication/use retain their own policy and responsibility boundaries. + +* Component: SDK model adaptation +The SDKs own syntax and model semantics. Render adapters retain their identities +and explicitly bind model/view/source snapshots before scene composition. + +[[file:docs/90-99-views/90-architecture-views/90.136-model-adaptation-boundaries.svg]] + +[[file:docs/10-19-design/10-architecture/10.143-sdk-model-adaptation-audit.org][Source audit and positive/negative controls]] + +* Component: static render package +[[file:packages/render/README.org][@deterministic-engineering/render]] is a static, functional Library. +Questions, copy, model/source links and resource selection stay in D2/SysML and +the project declarations. Domain composition is a pure function. Export effects +measure actual browser text/fonts/images and return artifacts plus rendering facts. + +| Choice | Declaration / extension boundary | +|--------+---------------------------------| +| Diagram kind | Open project identifier; architecture and Workflow purposes stay separate | +| Organization | Project =layout= / =presentation= and a domain compositor | +| Visual style | Ordered immutable theme layers: typography, surfaces, strokes, palette and spacing | +| Icons | Ordered project-selected SVG packs, independently replaceable | +| Variant | D2-selected kind, layout, themes and icon packs over the same captured model | + +The package reuses D2 model compilation, ELK.js scene layout/routing, parse5 HTML parsing, Rough.js +options/primitives, XYFlow connector paths and Playwright export. It has no +interactive whiteboard or React runtime. A node diagram or swimlane is one example, +not the framework's entire diagram vocabulary. + +** Real Library / Profile / Scenario Case +The =project-owned= variants select kinds, a theme and a glyph pack defined only +in the consumer. Their source associations and current blocked state stay intact. + +Architecture: [[file:docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture.d2][D2]] · [[file:docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-sketchbook.png][Complete hand-drawn architecture]] + +Workflow: [[file:docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow.d2][D2]] · [[file:docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-sketchbook.png][Separate hand-drawn Workflow]] + +** Development and verification +Use the declared Bun version from [[file:.github/workflows/render.yml][render CI]] and its pinned +package/browser dependencies. Run in =packages/render=: #+begin_src sh -just deps -just build -just test -just test-project-formation +bun install --frozen-lockfile +bunx playwright install chromium +bun run typecheck +bun test ./test +bun run test:export #+end_src -For an installed checkout, =just deps-update= invokes the product's existing -native package update entry. =just build-dependency PACKAGE= rebuilds one native -package with the same compiler environment and budget. - -The [[file:Justfile][Justfile]] supplies bounded commands and the upstream Homebrew/Darwin -compiler invocation policy. Build/update calls retain the 180-second deadline; -ordinary test invocations retain 120 seconds. Native installation spans multiple -package builds and SDK metadata work. Bounded package entries require the existing -host tools =env -S= and GNU =timeout=. Native package resolution is unchanged. The sole package build -entry is [[file:build.ss][build.ss]]. Project test policy lives in -[[file:projects/library-formation/test.ss][the Library formation Project]], using Core's existing TestingScript/Fixture/Ops. -The Codex transport belongs to [[file:scenarios/project-formation/codex-source.py][its Scenario]]. There is no development dependency resolver, -source mount, patch application or alternate load-path configuration. Test evidence -paths are explicit inputs; historical local results are never default inputs. -Historical qualification against patched sources does not qualify the inherited -unpatched package closure. See [[file:docs/10-19-design/10-architecture/10.107-implementation-progress-and-execution-gates.org::#implementation107-package-deadlines][the historical execution plan]] and [[file:docs/10-19-design/10-architecture/10.121-native-dependency-cohort-and-expression-alignment.org][current native cohort admission]]. +Run the package-owned cases from =packages/render=: -* Purpose -:PROPERTIES: -:CUSTOM_ID: purpose -:STATUS: proposed -:END: +#+begin_src sh +bun run test:examples +bun run example:case +bun run example:compare +bun run example:overviews +#+end_src -Deterministic Engineering organizes reusable engineering designs in a Library. -ASCENT provides evidence-chain-driven reasoning: current support, counterevidence, -applicability, derivation reuse, invalidation and observable reasoning feedback. -Scheme DSLs and POO composition express domain designs and their evidence -associations; formal methods and architecture arguments connect claims to checked -support. Finite obligation derivation is one part of that system. Core supplies reusable Module/Profile/Scenario -mechanisms. Lambda Aitia owns software development lifecycle (SDLC) and assurance -policy, through which composed work returns implementation and operational evidence -for design revision. This Library supplies domain designs and evaluation contracts. - -The repository architecture starts at [[file:project.sysml][project.sysml]], with the explicit -[[file:docs/10-19-design/10-architecture/10.78-case-organization.sysml][DE-CASE-01 companion model]]. -The companion model's =actual::gateway= is an application-example fixture Scenario, -not another Project or a production gateway. A gateway normally belongs to a -consuming system as a Component; Features can cross component boundaries. -[[file:docs/10-19-design/10-architecture/10.119-project-component-feature-and-example-boundaries.org][10.119]] makes those scope and classification rules explicit. -[[file:docs/10-19-design/10-architecture/10.118-domain-property-testing-and-evidence-trajectories.org][10.118]] proposes domain PBT methods for backpressure and broadcast through the -existing Library/POO/ASCENT owners, with no implementation claim. - -[[file:docs/10-19-design/10-architecture/10.79-current-library-project-formation.org][10.79]] walks this repository -from confirmed Library intent through LLM candidates to the SysML/Org layout. -[[file:docs/10-19-design/10-architecture/10.80-declarative-project-formation.org][10.80]] places the first reasoning slice in declared Library / Profile / Module / -Scenario / Project owners, with ASCENT consequences driving model materialization. -The native reasoning probe generated the current design candidate, and the -source-stage-observed Project Scope gate passes. Full orchestration, clean-build -and recovery qualification remain open. -[[file:docs/10-19-design/10-architecture/10.81-declarative-chain-audit.org][10.81]] audits the full declarative chain and assigns the remaining capture, -Contract, provider/catalog binding and model-publication gaps to their owners. -Its refactoring order is proposed; automatic orchestration is not expanded. -[[file:docs/10-19-design/10-architecture/10.82-a0-dependencies-and-normalized-handoff.org][10.82]] details A0 dependency/build/load provenance and the three normalized -Context/Scope handoffs, with current upstream observations and proposed controls. -[[file:docs/10-19-design/10-architecture/10.83-a1-effective-declarations-and-contracts.org][10.83]] unifies A1 effective declaration/Type/Contract ownership, sole Library -generation, model/policy/method selection and normalized call boundaries. -[[file:docs/10-19-design/10-architecture/10.84-a2-project-selection-and-capture.org][10.84]] details A2 declared Project composition, checked Profile selection and -real project-input acquisition into one Scenario capture C, with proposed controls. -[[file:docs/10-19-design/10-architecture/10.85-a3-application-projection-and-ascent.org][10.85]] specifies A3 complete fact projection and native ASCENT acceptance, -separating declaration conditions from qualified evidence and preserving all negatives. -[[file:docs/10-19-design/10-architecture/10.86-a4-sysml-selection-and-materialization.org][10.86]] specifies A4 selected SysML materialization, name/reference closure, -validation layers and explicit publication against the expected current baseline. -[[file:docs/10-19-design/10-architecture/10.87-a5-declarative-slice-joint-acceptance.org][10.87]] unifies A5 source/compiled/cold/recovery and same-C reasoning/model -publication acceptance, evidence products, negative controls and separate research comparisons. -[[file:docs/10-19-design/10-architecture/10.88-declarative-slice-consistency-and-order.org][10.88]] audits A0--A5 consistency against current upstream changes, clarifies Scope-before-C -and expected publication transitions, and assigns implementation dependencies and open gates. -[[file:docs/10-19-design/10-architecture/10.89-i0-source-cohort-dependencies-and-load-boundaries.org][10.89]] details I0 dependency/checkouts, migrated public APIs, selected source baselines -and phased build/load boundaries, with ordered repairs and proposed controls. -[[file:docs/10-19-design/10-architecture/10.90-i1-normalized-context-and-scope-handoffs.org][10.90]] specifies I1 exact K1/SD/S1 handoffs, Context/reader provenance, consumer isolation -and separate source/compiled/cold/restoration acceptance, with existing-owner repair seams. -[[file:docs/10-19-design/10-architecture/10.91-i2-library-module-declarations-and-publication.org][10.91]] unifies I2 Library/Module declarations, sole generation, actual parent/policy/model -and implementation/catalog bindings, construction order and normalized Scope exports. -[[file:docs/10-19-design/10-architecture/10.92-i3-project-profile-scenario-and-capture.org][10.92]] unifies I3 declared Project/Scope consumption, checked Profile and Scenario binding, -real project acquisition, original C and capture-once consumer boundaries. -[[file:docs/10-19-design/10-architecture/10.93-i4-application-projection-and-accepted-inference-view.org][10.93]] specifies I4 same-C complete fact projection, actual Program/native acceptance, -exact evidence/check and plan/edge joins, and the frozen inference view supplied to SysML. -[[file:docs/10-19-design/10-architecture/10.94-i5-sysml-selection-materialization-and-validation.org][10.94]] unifies I5 SysML candidate selection/materialization, name/reference closure, -actual independent validator provenance and the separate explicit-publication handoff. -[[file:docs/10-19-design/10-architecture/10.95-i6-joint-acceptance-and-explicit-sysml-publication.org][10.95]] unifies I6 joint lanes/evidence and explicit SysML publication, guarded B -> O, -replay/crash and distinct build/C/effect recovery; all runtime gates remain unexecuted. -[[file:docs/10-19-design/10-architecture/10.96-declarative-slice-coherence-and-current-upstream-audit.org][10.96]] audits I0--I6 coherence against current dependencies/testing ownership, -same-C stage ordering, transition-aware publication, recovery and actual open gates. -[[file:docs/10-19-design/10-architecture/10.97-i0-dependency-load-and-testing-entry-migration.org][10.97]] unifies I0 dependency/checkout/build/load migration, Core TestingScript/Fixture, -dev/just routing, migrated product helpers and actual entry/limit/acceptance boundaries. -[[file:docs/10-19-design/10-architecture/10.98-i1-normalized-context-and-scope-retention.org][10.98]] unifies I1 exact K1/SD/S1 retention, consumer/realized-Scope isolation, -native Context/package guards and separate compiled/load/cold/recovery control gates. -[[file:docs/10-19-design/10-architecture/10.99-i2-effective-library-module-declarations-and-scope-publication.org][10.99]] unifies I2 sole-version/effective Types, actual model and policy graphs, -real method/Program/catalog/mapping bindings and normalized Config/Scope publication. -[[file:docs/10-19-design/10-architecture/10.100-i3-project-profile-scenario-binding-and-unique-capture.org][10.100]] unifies I3 checked Scope consumption, declarative selection, real input acquisition -and unique C origin/lifetime/current-use boundaries; design only. -[[file:docs/10-19-design/10-architecture/10.101-i4-application-projection-and-accepted-ascent-view.org][10.101]] unifies I4 same-C/actual-Program projection, complete input coverage, -negative and evidence semantics, native reception and frozen SysML handoff; design only. -[[file:docs/10-19-design/10-architecture/10.102-i5-sysml-selection-materialization-and-validation.org][10.102]] unifies I5 same-C/view selection, catalog/mapping names and closure, -exact candidate staging, actual layered validation and explicit-publication boundary; design only. -[[file:docs/10-19-design/10-architecture/10.103-i6-joint-acceptance-and-explicit-sysml-publication.org][10.103]] unifies I6 actual-chain joint acceptance, explicit B-to-O publication, -independent cold/recovery lanes and evidence/verdict closure against current upstream changes; design only. -[[file:docs/10-19-design/10-architecture/10.104-declarative-slice-coherence-and-implementation-gates.org][10.104]] audits 10.97--10.103 contract/control coherence, stage-qualified C/view/O -chronology, protected publication/recovery and non-circular implementation gates; design only. -[[file:docs/10-19-design/10-architecture/10.105-i0-dependencies-prelude-build-load-and-testing.org][10.105]] unifies I0 actual dependency/entry/prelude/build/load migration, -package-library-spec, TestingScript and fixture/cwd ownership with bounded non-circular exits; design only. -[[file:docs/10-19-design/10-architecture/10.106-i1-normalized-context-scope-realization-and-self-binding.org][10.106]] unifies I1 exact K1/SD/S1 retention with source-owned package overrides, -declared config/export order, lexical self binding and isolated load/cold/recovery controls; design only. - -Here, *LLM-based AI agent* means an engineering system built around a large -language model, with task context, tools and an execution environment. Later -mentions of Agent use this shorthand. The LLM supplies reasoning capabilities; -ASCENT evaluates explicit evidence relations. The [[file:docs/10-19-design/10-architecture/10.05-agent-reasoning-and-design-convergence.org::#llm-agent-terminology][terminology contract]] distinguishes -models, agents, evidence trajectories and protocol actors. - -Agent-authored code also needs reviewable engineering explanations: relevant -types and ownership, algorithm principles, conditional complexity, architectural -rationale and current evidence. The Library should help keep those claims -connected as code changes, while selecting useful checks and avoiding repetitive -review prose. [[file:docs/10-19-design/10-architecture/10.18-agent-authored-engineering-and-review-contracts.org][10.18]] defines this design and its prospective review-cost -controls; no productivity or defect-rate improvement is claimed yet. - -The standard requirement source is separate from document numbering: Johnny.Decimal -locates documents, AR labels review cases, and NASA SWE identifiers retain their -selected edition/criterion identity. [[file:docs/10-19-design/10-architecture/10.19-standard-identities-and-aitia-review-traceability.org][10.19]] maps Library obligations to existing -Lambda Aitia owners and supplies detailed review, history, authority and handoff -packets. Existing Aitia owner unit tests passed; these packets remain design gold. - -[[file:docs/10-19-design/10-architecture/10.20-evidence-arrival-and-scoped-review-recovery.org][10.20]] consolidates their evidence-recovery model: an LLM-based AI agent chooses -useful validation and repair, ASCENT preserves scoped support/counter/pending, -and Aitia reviews exact current content. Late evidence creates a new review; -original results, actual effects and unresolved obligations remain explicit. -Stable method/proof content can be reused without transferring receipt authority. -The recovery integration is not installed or qualified by these documents. - -The architecture and benchmark contracts derive from this framework's own -Library objects, evidence chains and consumer obligations. Specula and -TLAPS-Bench are optional research references; their workflow, grader and tasks -do not define our system or our gold. The [[file:docs/30-39-evaluation/30-benchmarks/30.04-oracle-review-data-contracts.org::#framework-owned-evaluation][framework ownership contract]] makes -this separation and the existing POO/ASCENT/SMP/QNT/Lean/Aitia responsibilities -explicit. - -Contributors maintain shared domain rules, Catalog entries, evidence contracts, -counterexamples and trajectories. Projects compose these assets through existing -POO Modules/Profiles/Scenarios and bind their own actual context. Agent hypotheses -and ASCENT relation derivation connect design choices to missing evidence and -change impact. [[file:docs/10-19-design/10-architecture/10.08-engineering-library-and-rust-trajectories.org][10.08]] develops this shared Library through Rust performance, -resource, concurrency and security trajectories; source-project measurements -are not automatically target-project evidence. - -The Library covers high-level architecture, components, low-level algorithms, -frontend and backend interactions, distributed protocols, performance, and -security. A reusable design carries its assumptions, contracts, extension points, -verification obligations, and argument, alongside associated code, models, -diagrams, tests, and historical evidence. - -Designs can be inherited and extended. Acceptance must be reconsidered when their -premises change. Determinism means explicit inputs and checkable derivation and -acceptance processes; it does not promise identical LLM responses or distributed -execution schedules. - -* Engineering Library organization -:PROPERTIES: -:CUSTOM_ID: engineering-library-organization -:END: +Candidate outputs and source/browser receipts are written to =.cache/render/=. +Tests include unknown declarations, model/source mutation, invalid relations and +ports, hidden Questions, unsupported primitives and failed image loading. +The Linux/macOS workflow runs the same entries with the existing resource +bounds. [[https://github.com/hardenedlinux/deterministic-engineering/pull/2/checks][PR checks]] +are authoritative for the actual tested commit. -The [[file:docs/10-19-design/10-architecture/10.27-library-delivery-repo-workflow-and-backpressure-audit.org][Library delivery and Agent repository workflow]] connects Scheme selection, -architecture and documentation, question-specific SysML/QNT/Lean/native methods, -ASCENT evidence reasoning and existing Aitia review. It includes a network-system -walkthrough and the backpressure contract audit with four gated refactor steps. -These are design specifications; no downstream delivery or refactor is implied. -The [[file:docs/10-19-design/10-architecture/10.28-network-service-agent-design-walkthrough.org][network service walkthrough]] makes that workflow concrete, including each -stage's inputs, outputs, document products and counterexample/repair path. -The [[file:docs/10-19-design/10-architecture/10.29-workflow-capabilities-and-minimum-completion.org][capability audit]] separates existing framework mechanisms from missing -domain knowledge and narrow adapters. [[file:docs/10-19-design/10-architecture/10.30-current-repository-engineering-case.org][DE-CASE-01]] uses this repository's actual -architecture, decisions, documents and historical evidence as the first case; -its project-wide runtime/review/delivery gates remain open. -The [[file:docs/10-19-design/10-architecture/10.31-architecture-document-and-decision-contracts.org][minimal architecture, Org product and decision contracts]] bind the case's -actual content to Library duties, Profile policy and Scenario capture, then to -scoped evidence and review through existing owners. They remain design-only. -The [[file:docs/10-19-design/10-architecture/10.32-case-content-contract-audit.org][case content audit]] checks those responsibilities item by item and records -remaining architecture, product and decision content separately from missing -verification, with a minimum completion sequence and paired audit view. -Its [[file:docs/10-19-design/10-architecture/10.30-current-repository-engineering-case.org::#case-design-review-selection][C1 design-review selection]] now defines the stage scope, required authored -products, responsibilities/unassigned roles and revision conventions, separating -Profile policy from future Scenario content capture. It issues no review result. -The [[file:docs/10-19-design/10-architecture/10.33-case-actual-and-target-architecture.org][C2 actual/target model inventory]] links selected elements, interfaces, -assumptions and proposed changes to source, requirements and verification duties. -Its detailed views keep current split capture distinct from the target path. -The [[file:docs/10-19-design/10-architecture/10.30-current-repository-engineering-case.org::#case-decision-baseline][C3 decision baseline]] records each choice's responsibility/state and shared version source, -assumptions, architecture/requirement/duty allocation and concrete reconsideration -conditions. Unassigned roles and independent review remain explicit gaps. -The [[file:docs/10-19-design/10-architecture/10.34-case-design-review-dossier-draft.org][C4 dossier draft]] binds D01-D10 to sections, selected input bytes and bounded -reference closure. It separates historical evidence, current candidates and -missing results; no review request has been submitted. - -Organize by software-engineering domain first: the Concurrency Library contains -execution, communication and resource-control knowledge. Bounded broadcast -close/wake belongs to communication; Rust/Tokio specializes that generic entry. -High performance is an objective selecting obligations across these Libraries. -Models, proofs, rules and tests belong to their engineering entry, rather than -forming unrelated tool directories. Core Modules publish selected capabilities; -Profiles bind premises and Scenarios consume them. - -[[file:docs/10-19-design/10-architecture/10.17-domain-libraries-and-atomic-specialization.org][10.17]] defines the target ownership tree, POO specialization, Lean-Poo proof -transport boundaries and existing Core explicit-root selection. The backpressure assets now live under the resource-control Library. A generic -parent Module publishes its model and required obligations; the Rust Module -requires and specializes that value. The gateway and native lifecycle Scenarios -consume the same publication. [[file:docs/10-19-design/10-architecture/10.22-domain-library-delivery-and-native-admission.org][10.22]] records delivery and qualification. No mass -import, new loader or copied framework is required. - -* Rust performance knowledge and application cases -:PROPERTIES: -:CUSTOM_ID: rust-performance-library-boundary -:END: +The [[file:docs/90-99-views/90-architecture-views/90.129-functional-architecture-rendering.svg][render architecture]] and +[[file:docs/90-99-views/90-architecture-views/90.130-llm-assisted-model-view-workflow.svg][view-authoring Workflow]] +are distinct current diagrams. Their D2 sources are maintained alongside the SVGs +and rendered through the measured TS scene API. The active SVGs and PNGs come from +the same font-settled scene; the old raw-D2 rendering path has been removed. -Rust performance knowledge spans ownership and resource lifecycles, -data layout/allocation/locality, asynchronous execution, runtime scheduling, -CPU parallelism and shared-state concurrency. Tokio and Rayon specialize those -mechanisms. A gateway is one application of the knowledge, alongside indexing, -compression and batch processing. Its topology does not define Library ownership. +* Scheme package entrypoints +The canonical dependency/prelude declaration is [[file:gerbil.pkg][gerbil.pkg]]. The compiler is +Gerbil; package commands own dependency resolution, checkout, manifests, +compilation and loading. Current commands and existing budgets live in [[file:Justfile][Justfile]]: -[[file:docs/10-19-design/10-architecture/10.14-rust-performance-library-and-mechanism-cases.org][10.14]] sets this organizing boundary. [[file:docs/10-19-design/10-architecture/10.15-scheme-owned-rust-mechanisms-and-development-evidence.org][10.15]] directly migrates the shared -publications and connects Scheme organization, models, native tests and Agent -development intervention through asynchronous -submission of owned CPU work, cancellation and actual resource release. It needs -no HTTP service. The actual native investigation and its qualification boundary are recorded in -10.15; the earlier 10.13 results remain historical bounded QNT/Lean evidence. +#+begin_src sh +just deps +just build +just test +just test-project-formation +#+end_src -The [[file:docs/10-19-design/10-architecture/10.16-tokio-broadcast-close-and-wake-library.org][broadcast close/wake entry]] extends the design Library from resource handoff -to a separate Tokio mechanism. Its actual-source mapping and test/evidence -contracts are specified; broadcast publication and method execution remain pending. +These Scheme/package gates are separate from TS rendering qualification. +Historical dependency/cohort results retain their original scope; this render PR +does not establish a fresh full Scheme cold-build or runtime admission result. -* Status and scope -:PROPERTIES: -:CUSTOM_ID: status -:STATUS: local-resource-library-slice-qualified-on-frozen-core-source -:END: +* Design, cases and review +- [[file:docs/00-09-project/00-documentation/00.01-index.org][Documentation index]] — the complete design/research history. +- [[file:docs/10-19-design/10-architecture/10.142-declarative-render-extensibility-audit.org][Current render audit]] — fixed assumptions removed, owners, extension contracts and controls. +- [[file:docs/10-19-design/10-architecture/10.141-cross-language-diagram-renderer-research.org][Rendering research]] — references and decisions behind the visual approach. +- [[file:docs/10-19-design/10-architecture/10.30-current-repository-engineering-case.org][DE-CASE-01]] — this Library as the engineering case. +- [[file:docs/20-29-cases/20-gateway/20.01-gateway-sdlc.org][Gateway case]] — application questions, obligations and open work. +- [[file:docs/90-99-views/90-architecture-views/90.01-index.org][Current and historical view index]] — architecture and Workflow artifacts with explicit scope. -The [[file:docs/10-19-design/10-architecture/10.21-engineering-design-audit-and-delivery-plan.org][current engineering audit and delivery plan]] identifies source-level scope/input -gaps and the next gated owner slice at its audit snapshot. Follow -[[file:docs/10-19-design/10-architecture/10.22-domain-library-delivery-and-native-admission.org][10.22]] for the subsequent direct owner migration, native admission Contracts, -focused acceptance controls. [[file:docs/10-19-design/10-architecture/10.23-native-aitia-backpressure-content-review.org][10.23]] adds native SWE-061/p1 consumption of -these actual results, failure blocking and revision-bound evidence reuse. Its -follow-up compiles real source variants and binds complete native exchange -history, workload-specific dispositions and late-counter reassessment. The -cross-intake extension binds two actual native exchanges to Aitia discovery and -signed test-authority decisions, retaining rejection across intake selection, -policy changes and reviewer handoff. Its bounded controls cover 28 gold outcomes; -the [[file:docs/10-19-design/10-architecture/10.23-native-aitia-backpressure-content-review.org::#cross-owner-history-handover][cross-owner continuation]] requires an exact root-authorized handover and fresh -successor-local receipts. Its 16 gold controls retain old rejection across owner -replacement, incomplete inventory and unavailable predecessor history. Global -discovery remains pending. The [[file:docs/10-19-design/10-architecture/10.23-native-aitia-backpressure-content-review.org::#persistent-owner-recovery][persistent recovery continuation]] uses closed -archives, host-selected signed heads, fresh native queries and new local receipts -across four actual Scheme processes. Its 21 gold controls include incomplete -archives, unresolved counters, head rollback and unavailable unsealed owners. -The [[file:docs/10-19-design/10-architecture/10.23-native-aitia-backpressure-content-review.org::#durable-counter-intake][durable intake continuation]] confirms a signed submission only after its full -accepted prefix and selected signed head are revalidated. Actual SIGKILL cases -cover confirmation, publication before return and incomplete writes. Power-loss -consistency, general WAL recovery and multi-writer publication remain unqualified. -The [[file:docs/10-19-design/10-architecture/10.23-native-aitia-backpressure-content-review.org::#explicit-prefix-repair][explicit prefix repair continuation]] binds root-authorized completion to the -exact selected writing intent, preserves both old counters, and requires fresh -native activation and review. Repair never restores old receipt authority. -The optional [[file:docs/10-19-design/10-architecture/10.24-sysml-interoperability-and-authority-boundaries.org][SysML interoperability profile]] adds engineering-model exchange and -external constraint evidence while retaining native Scheme, ASCENT and Aitia -ownership. A small isolated OpenSysML experiment is recorded; a production -export/import bridge is not yet implemented. -The accepted [[file:docs/10-19-design/10-architecture/10.25-rust-sysml-quint-lean-evidence-integration.org][Rust / SysML / Quint / Lean integration design]] coordinates these methods -through shared native obligations, explicit correspondence and existing evidence -owners. The six-case backpressure slice is the first delivery target. -The [[file:docs/10-19-design/10-architecture/10.26-backpressure-public-contracts.org][public Library / Profile / Scenario contracts]] explain publication, parameter -selection and one captured use through existing native POO/Core Contracts. -Its [[file:docs/10-19-design/10-architecture/10.25-rust-sysml-quint-lean-evidence-integration.org::#integrated-local-slice][first local execution]] records 20 results under the frozen Core baseline: -17 support, three counter and nine pending obligations, with query-derived D2 -output and preserved history after a mapping-selection change. -Institutional authority, broadcast and evaluation gates remain open. The -local owner slice now has 22 real result records, nine queries and seven exchanges -qualified on a captured Core source baseline. Two live-Core runs were refused -when compiler-tool sources changed and remain historical evidence. This is not -qualification of the moving Core checkout or all remaining delivery gates. - -This repository maintains reusable engineering Library knowledge for Agent-assisted -software design. Read 10.14 for the Library boundary and 10.15 for the current mechanism -implementation. The earlier qualified executable case is -[[file:docs/10-19-design/10-architecture/10.13-real-method-results-and-agent-evidence-loop.org][10.13: real method evidence loop]]. It follows Library discovery, native obligation -derivation, actual QNT/TLC and Lean execution, native ASCENT exchange registration -and scoped reuse across capacity, cache and source changes. -[[file:docs/10-19-design/10-architecture/10.12-gateway-library-registration-and-runtime-dependencies.org][10.12]] retains the finite rule and runtime-dependency design. - -- ~library/concurrency/resource-control/backpressure-memory/tokio-rayon/~ owns specialization, model Contracts, correspondence and review policies. -- ~library/drivers/rust-resources/~ owns method binding, execution, observation and the independent oracle. -- ~languages-engineering/rust/concurrency/resource-control/backpressure-memory/~ contains the Rust crate and its Cargo.lock. -- ~library/drivers/evidence/~ runs that entry's finite obligation/applicability rules through ASCENT. -- ~profiles/gateway.ss~ defines independent POO C1/C2/cache/retry application values. -- ~scenarios/resource-lifecycle/~ binds the minimal native mechanism; ~scenarios/gateway-review/~ independently binds the gateway application. -- ~t/*-test.ss~ checks real registration/query and native package compatibility. -- ~library/concurrency/resource-control/backpressure-memory/~ owns the bounded Quint model and conditional Lean arithmetic lemma. - -The real local replay uses Core Ops and a trusted in-process observer; its -content hashes do not provide remote producer authentication. - -Core's native init/build remains the only module and package build machinery. -The current checks exercise a finite engineering slice. Rust source/lock/feature -capture and native lifecycle observations belong to the 10.15 path. Production -producer authentication, complete source refinement, matched performance evidence, -complete benchmark closure and lambda-aitia integration remain open. - -#+begin_src sh :eval never :exports code -gerbil build -# Run the current native replay and audit using the commands in 10.15. -# RESOURCE_REAL_REPORT identifies that completed run for the integration test. -#+end_src +The repository is under active design and refactoring. Candidate models, source +observations, rendered explanations, method evidence and independent review results +remain distinct. Open findings and counterevidence stay visible for audit. -* Read the design -:PROPERTIES: -:CUSTOM_ID: reading-order -:END: +* Functional rendering resources +Render-owned examples live under [[file:packages/render/examples/][packages/render/examples/]]. +Visual styles, palettes, typography, density, ELK preferences and icon packs +compose independently. Model Questions/content remain in D2/SysML; optional pure +heading parts distinguish Question role markers from domain Answer glyphs and +measure the complete group. The default exported canvas is explicit, with an +optional transparent mode. See [[file:docs/10-19-design/10-architecture/10.144-functional-themes-layouts-and-package-examples.org][10.144 contracts and acceptance]]. -#+NAME: document-map -| Document | Purpose | -|----------+---------| -| [[file:docs/10-19-design/10-architecture/10.21-engineering-design-audit-and-delivery-plan.org][10.21 Current engineering audit and delivery plan]] | Source-backed findings, evidence qualification and G0-G4 delivery/acceptance order | -| [[file:docs/10-19-design/10-architecture/10.22-domain-library-delivery-and-native-admission.org][10.22 Domain Library delivery and native admission]] | Generic parent publication, Rust specialization, captured native inputs and acceptance boundaries | -| [[file:docs/10-19-design/10-architecture/10.23-native-aitia-backpressure-content-review.org][10.23 Native Aitia backpressure review]] | Actual coding-method evidence, native receipts, failure priority and content reuse | -| [[file:docs/10-19-design/10-architecture/10.05-agent-reasoning-and-design-convergence.org][Agent reasoning and design convergence]] | Why ASCENT drives open reasoning, Rust design trajectory, and design versus implementation qualification | -| [[file:docs/90-99-views/90-architecture-views/90.01-index.org][Paired Org and D2 views]] | Editable diagrams, rendered architecture/workflow views, stable correspondence and synchronized updates | -| [[file:docs/10-19-design/10-architecture/10.01-core-model.org][Core design model]] | Snapshot identity, POO composition and extension, obligation derivation, invalidation, reuse, and acceptance semantics | -| [[file:docs/10-19-design/10-architecture/10.04-evidence-driven-workflow.org][Evidence-driven architecture]] | Latest inspected ASCENT PR 1, existing SMP application discipline, Evidence Chain/DAG/Trajectory roles and QNT/TLC authoring boundary | -| [[file:docs/10-19-design/10-architecture/10.02-domain-and-rules.org][Engineering domain and finite rules]] | Typed objects and relation planes, organizational composition, bounded R01-R15 templates, and projection semantics | -| [[file:docs/10-19-design/10-architecture/10.03-upstream-capabilities.org][Upstream capability map]] | Pinned gerbil-ascent, lean-poo, Core PR 19 and Lambda Aitia sources, boundaries, and integration gaps | -| [[file:docs/10-19-design/10-architecture/10.06-poo-ascent-integration.org][10.06 POO-to-ASCENT integration]] | Concrete init correspondence, domain publications, Profiles/Scenarios, content attestation, queries and invalidation/reuse | -| [[file:docs/10-19-design/10-architecture/10.07-claim-witness-reference-contracts.org][10.07 Claim/witness/TVA contracts]] | Canonical identities, witness guards, typed references, finite rules, independent oracles and refusal/pending semantics | -| [[file:docs/10-19-design/10-architecture/10.08-engineering-library-and-rust-trajectories.org][10.08 Shared engineering Library and Rust trajectories]] | Contributed Catalog/rules/factors, project application and performance/security/concurrency evidence trajectories | -| [[file:docs/10-19-design/10-architecture/10.09-rust-backpressure-memory-library-entry.org][10.09 Rust backpressure and memory budget Library entry]] | Complete Catalog/POO/ASCENT design entry, resource obligations and cross-workload reuse gold | -| [[file:docs/10-19-design/10-architecture/10.10-backpressure-capacity-stall-and-retry-trajectories.org][10.10 Capacity, stall and retry trajectories]] | Complete CA/DS/RT input and step gold, scoped dependency impact, lifecycle/holder coverage and joint budget reuse | -| [[file:docs/10-19-design/10-architecture/10.11-live-capacity-full-cleanup-and-joint-budgets.org][10.11 Live capacity, full cleanup and joint budgets]] | Live-generation envelopes, full cleanup ownership/races and sufficient joint-budget evidence routes | -| [[file:docs/10-19-design/10-architecture/10.16-tokio-broadcast-close-and-wake-library.org][10.16 Tokio broadcast close and wake Library]] | Source-inspected Module/Profile/Scenario design, QNT action map, independent test gold, ASCENT obligations and Agent intervention | -| [[file:docs/10-19-design/10-architecture/10.17-domain-libraries-and-atomic-specialization.org][10.17 Domain Libraries and atomic specialization]] | Engineering hierarchy, canonical ownership, POO / Lean-Poo composition and existing Core selection | -| [[file:docs/10-19-design/10-architecture/10.18-agent-authored-engineering-and-review-contracts.org][10.18 Agent-authored engineering and review]] | Algorithm/type/lifecycle/cost explanations and eight concrete AR review packets with independent gold and cost boundaries | -| [[file:docs/10-19-design/10-architecture/10.19-standard-identities-and-aitia-review-traceability.org][10.19 Standard identities and Aitia traceability]] | NASA/SWE source/criterion ownership, local numbering, project applicability and opposing-evidence review | -| [[file:docs/10-19-design/10-architecture/10.20-evidence-arrival-and-scoped-review-recovery.org][10.20 Evidence arrival and scoped review recovery]] | Shared finite recovery rules, existing owner/relationship mapping, minimal affected review and three independent recovery trajectories | -| [[file:docs/10-19-design/10-architecture/10.15-scheme-owned-rust-mechanisms-and-development-evidence.org][10.15 Scheme-owned mechanisms and development evidence]] | Direct Module migration; native source/lock capture; QNT/Lean; real ASCENT registration, change queries and Agent intervention | -| [[file:docs/10-19-design/10-architecture/10.14-rust-performance-library-and-mechanism-cases.org][10.14 Rust performance Library and mechanism cases]] | Mechanism-owned Catalog, current ownership debt, native lifecycle case and evidence boundaries | -| [[file:docs/10-19-design/10-architecture/10.13-real-method-results-and-agent-evidence-loop.org][10.13 Real method evidence loop]] | Actual QNT/TLC and Lean results, native exchange, independent oracle, scoped reuse and rejection controls | -| [[file:docs/10-19-design/10-architecture/10.12-gateway-library-registration-and-runtime-dependencies.org][10.12 Executable gateway Library application]] | Current owners, actual registration/query gold, dependency semantics and method/evidence boundaries | -| [[file:docs/20-29-cases/20-gateway/20.03-gateway-design-audit.org][Gateway design audit]] | Current PR/source boundary, all 24 case reviews, exact reset subcontrols, 12 gap dispositions and POO/ASCENT integration plan | -| [[file:docs/20-29-cases/20-gateway/20.01-gateway-sdlc.org][Gateway SDLC walkthrough]] | A multi-tenant gateway checks the model through changes, counterexamples, reuse, delivery, and operational feedback | -| [[file:docs/20-29-cases/20-gateway/20.02-gateway-obligation-ledger.org][Gateway obligation/change/reuse ledger]] | Atomic GW obligations, A01-A14 premises, CH01-CH12 changes, evidence-specific reuse and GAP01-GAP12 review | -| [[file:docs/20-29-cases/20-gateway/20.04-query-and-change-fixtures.org][20.04 Query and change fixtures]] | Six exact relation/reference cases and independent C1-to-C2, cache and source change handoffs | -| [[file:docs/20-29-cases/20-gateway/20.05-expanded-admission-controls.org][20.05 Expanded admission controls]] | DC01-DC16 concrete inputs, T/V/A bindings, independent judgments and CW01-CW16 consistency | -| [[file:docs/20-29-cases/20-gateway/20.06-oracle-packet-integration.org][20.06 Oracle packets in existing POO/ASCENT owners]] | Record/role and native Evidence bindings; three change-packet reviews and OA01-OA15 audit | -| [[file:docs/20-29-cases/20-gateway/20.07-packet-query-and-history-fixtures.org][20.07 Packet query and history fixtures]] | BQ01-BQ08 exact three-path inputs/gold, fresh usage/T-use, late-prefix visibility and non-erasure controls | -| [[file:docs/20-29-cases/20-gateway/20.08-qr-identity-and-reuse-controls.org][20.08 Expanded QR identity and reuse controls]] | Twelve exact control inputs/gold, BQ/path bindings, acyclic identity, late isolation and scoped reuse | -| [[file:docs/20-29-cases/20-gateway/20.09-exchange-replay-and-display-trajectories.org][20.09 Exchange, replay and display trajectories]] | QR03/QR06/QR11 event inputs and step gold, three-path bindings and hidden-assumption audit | -| [[file:docs/20-29-cases/20-gateway/20.10-existing-owner-concurrency-and-delivery.org][20.10 Existing owners for concurrency and delivery]] | Linked Core and current ASCENT source mapping; coherent capture, late replies, external display confirmation and exact closures | -| [[file:docs/20-29-cases/20-gateway/20.11-expanded-boundary-review-packets.org][20.11 Expanded boundary review packets]] | C07/R06/D04/D05 full packet inputs and step gold; ABA, late law reuse, saved scope and refresh closures | -| [[file:docs/20-29-cases/20-gateway/20.12-selected-read-use-race-and-counter-packets.org][20.12 Selected-read, use-race and late-counter packets]] | Exact selector/binding and relation-unit restore; use-time permission; full opposing-family display and independent review | -| [[file:docs/20-29-cases/20-gateway/20.13-binding-confirmation-use-race-and-counter-disposition.org][20.13 Binding confirmation, use race and counter disposition]] | SR04/UR04/LC06 exact confirmation, actual use outcomes, authentic method/review and immutable reference closures | -| [[file:docs/20-29-cases/20-gateway/20.14-partial-delivery-consumption-authority-and-blocker-closure.org][20.14 Partial delivery, consumption authority and blocker closure]] | BC04/UC04/CD05 full packets, unit completion, actual-use authorization and item-scoped blocker ledger | -| [[file:docs/20-29-cases/20-gateway/20.15-late-outcome-origin-and-expanded-intake-reuse.org][20.15 Late outcome origin and expanded intake reuse]] | BP05-late/UA04-late/BL06-member full packets, original snapshot binding and reason-dependent item reuse | -| [[file:docs/20-29-cases/20-gateway/20.16-unknown-order-negative-dependencies-and-defensive-engineering.org][20.16 Unknown order, negative dependencies and defensive engineering]] | Historical facts versus unknown authority, negative-reason reassessment and bounded defensive blocking | -| [[file:docs/20-29-cases/20-gateway/20.17-sufficient-evidence-and-bounded-revalidation.org][20.17 Sufficient evidence and bounded revalidation]] | Completion-bound historical access, closed authority history, dependent-method requalification and DE01 check boundaries | -| [[file:docs/20-29-cases/20-gateway/20.18-policy-required-checks-and-evidence-admission.org][20.18 Policy-required checks and evidence admission]] | OP/BR/AM rule trajectories, real requirements versus redundant defense, pending/refused/reusable evidence | -| [[file:docs/00-09-project/00-documentation/00.02-local-package-links.org][00.02 Local package links]] | Executed local POO Flow/Core source links, exact checkout observations and setup qualification boundary | -| [[file:docs/30-39-evaluation/30-benchmarks/30.01-benchmark-design.org][Benchmark and evaluation design]] | Specula/TLAPS references, component and Agent lanes, independent oracles, matched budgets, costs and scoring | -| [[file:docs/40-49-research/40-reference-studies/40.01-specula-reference-study.org][Specula local research record]] | Authorized sparse checkouts, archive identity limits, canonical grading mechanisms and transferred controls | -| [[file:docs/40-49-research/40-reference-studies/40.02-selected-system-and-proof-case.org][Selected system and proof task]] | Complete available etcd/raft archive, inflights abstraction audit, CommitLiveness unit, reusable assets and gateway semantic mapping | -| [[file:docs/30-39-evaluation/30-benchmarks/30.02-gateway-minimal-benchmark.org][Minimal gateway benchmark]] | Exact pilot scope, independent oracle contracts, 12 case families/24 variants and GAP01-GAP12 exit criteria | -| [[file:docs/30-39-evaluation/30-benchmarks/30.03-gateway-variant-contracts.org][Twenty-four detailed variant contracts]] | Exact inputs, evidence, independent oracles, proposed QNT properties, reuse and invalidation per case | -| [[file:docs/30-39-evaluation/30-benchmarks/30.04-oracle-review-data-contracts.org][30.04 Framework-owned oracle review data]] | Independent input/gold records, DC stage/closure/cut packets, 24 variant bindings and 12 gap dispositions | - -* Architecture -:PROPERTIES: -:CUSTOM_ID: architecture -:END: +Detailed architecture: [[file:docs/90-99-views/90-architecture-views/90.135-library-project-architecture.png][Sketchbook dependency view]]. +Workflow: [[file:docs/90-99-views/90-architecture-views/90.130-llm-assisted-model-view-workflow.png][Sketchbook authoring Workflow]]. -#+CAPTION: Evidence-driven Agent exploration, reusable design knowledge, and the separate effect boundary. -#+NAME: architecture-loop -[[file:docs/90-99-views/90-architecture-views/90.02-agent-evidence-loop.svg]] +* Component: Design and Taste -[[file:docs/90-99-views/90-architecture-views/90.02-agent-evidence-loop.d2][D2 source]]; [[file:docs/90-99-views/90-architecture-views/90.01-index.org][all synchronized architecture and workflow views]]. - - -#+NAME: responsibility-map -| Part | Responsibility | Boundary | -|------+----------------+----------| -| Scheme DSL / POO | Design objects, composition, contracts, specialization | Successful composition does not establish behavioral correctness | -| poo-flow-core | Native Modules, Profiles, selected Graph and test projection, Case policy | Selection is inert; currentness and execution remain explicit | -| gerbil-ascent | Evidence Chain/DAG, current support and counterevidence, reuse/invalidation, relational inference and Trajectory feedback | Checked local support is source/premise-bound; it is not whole-task correctness or action authority | -| D2 | Structural and trust-boundary projections | A diagram is not a proof | -| Org / JSON | Authored arguments and versioned interchange | Parsing/schema validity does not establish semantic correspondence | -| Quint / QNT | Maintained protocol authoring; compiled TLC exploration of transitions, concurrency and faults | Generated backend artifacts, fairness and complete exploration scope remain explicit | -| Lean / lean-poo | Typed properties, composition laws, proof transport | Domain interpretation and source correspondence need explicit work | -| Architecture argument | Claims, reasoning, alternatives, evidence, objections | Unresolved objections remain visible | -| lambda-aitia / SDLC | Lifecycle assurance policy, obligations, decisions and execution integration | Pure planning does not establish Host admission or effect enforcement | -| Agent / LLM | Proposals, specialization, artifacts, interpretation of feedback | Generated statements remain candidates until checked | - -The architecture argument supports the Argue Architecture direction through -explicit claims, reasons, evidence, and objections. Applicable standards require -versioned clause mappings and justified tailoring. This repository's concrete -standard and lambda-aitia integration mappings remain open; inspected upstream -capabilities are listed with their separate limits. - -The [[file:docs/30-39-evaluation/30-benchmarks/30.01-benchmark-design.org::#evaluation-lanes][evaluation lanes]] separately assess projection integrity, finite derivation, -invalidation/reuse, formal capability, Module organization, Agent engineering and -runtime handoffs. No benchmark has been executed or scored in this repository. - -The [[file:docs/30-39-evaluation/30-benchmarks/30.02-gateway-minimal-benchmark.org::#gap-convergence][minimal benchmark convergence matrix]] assigns concrete exit evidence to every -gateway gap. Specula and TLAPS assets remain references; the Library's authored -models use QNT and its existing TLC backend path alongside Lean, ASCENT and POO. - -* First design case -:PROPERTIES: -:CUSTOM_ID: gateway -:END: +[[file:packages/render/src/design.ts][Design]] declares the reader, message and model fidelity. +[[file:packages/render/src/taste.ts][Taste]] composes pure choices before rendering and +inspection after export. Questions select subjects, source observations select gaps, +and the existing ELK layout measures and routes the resulting view. Themes remain +replaceable resources. No Case-specific drawing recipe is selected in TypeScript. + +The same Library / Profile / Scenario model is shown with changed input Questions +and selected evidence, using one program and one hand-drawn style: -The [[file:docs/20-29-cases/20-gateway/20.01-gateway-sdlc.org::#gateway-baseline][gateway baseline]] composes tenant authorization, -bounded local resources, replication, and a retry policy. Its extensions expose -questions that inheritance alone cannot answer: a per-instance limit does not -establish a fixed global limit; a local timeout does not stop remote work; a -retry does not establish exactly-once business execution. +[[file:docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-comparison.png]] -The walkthrough follows these questions into obligations, counterexamples, -revision impact, evidence readmission, SDLC work, and operational change. All -example evidence and decisions are hypothetical. The current -[[file:docs/20-29-cases/20-gateway/20.01-gateway-sdlc.org::#case-open-work][open-work register]] records what remains unproved and unimplemented. +[[file:docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-adopter.png][Adopter Question]] · [[file:docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-maintainer.png][Maintainer Question]] · [[file:docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-source-gap.png][Selected source gap]]. +The source gap is an observed declaration, not issued evidence or an accepted capture. +Selection reasons and input fingerprints remain attached to the exported receipt; +changed inputs require selection and rendering again. -* Related projects +[[file:docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices.d2][Editable D2]] · [[file:docs/10-19-design/10-architecture/10.146-taste-selection-and-reuse.org][Selection, licensing and acceptance]]. -- [[https://github.com/tao3k/gerbil-ascent][gerbil-ascent]] supplies relevant Scheme relational and evidence foundations. -- [[https://github.com/tao3k/lean-poo][lean-poo]] supplies relevant prototype composition and proof-reuse foundations. -- [[https://github.com/tao3k/poo-flow-core/pull/19][poo-flow-core PR 19]] provides the inspected Module and test-organization foundation. -- [[https://github.com/tao3k/lambda-aitia][Lambda Aitia]] owns the software lifecycle and causal assurance contribution. +* Licensing -See the [[file:docs/10-19-design/10-architecture/10.03-upstream-capabilities.org::#inspection-scope][inspection scope]] for pinned sources and limitations. Their capabilities do -not automatically qualify the system proposed here. +This repository follows REUSE with SPDX comment headers, file-specific notices, +and standard sidecars for binary and strict JSON files. See [[file:LICENSING.org][licensing]] +and [[file:packages/render/THIRD-PARTY.org][rendering asset attribution]]. diff --git a/build.ss b/build.ss index cb562c9..5f144b8 100755 --- a/build.ss +++ b/build.ss @@ -1,3 +1,7 @@ +;;; SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +;;; +;;; SPDX-License-Identifier: LGPL-2.1-or-later + #!/usr/bin/env gxi ;;; Native package build: use the same Core/SDK boundary as agentic-ai-lab. (import (for-syntax diff --git a/docs/00-09-project/00-documentation/00.01-index.org b/docs/00-09-project/00-documentation/00.01-index.org index cf6379e..dd05025 100644 --- a/docs/00-09-project/00-documentation/00.01-index.org +++ b/docs/00-09-project/00-documentation/00.01-index.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 00.01 Documentation Index and Johnny.Decimal Organization #+LANGUAGE: en #+PROPERTY: JD_ID 00.01 @@ -344,3 +348,16 @@ source projection, behavioral checks and branch custody. - [[file:../../10-19-design/10-architecture/10.138-native-package-cohort-and-ci-provenance.org][10.138 Native package cohort and CI provenance]] - [[file:../../10-19-design/10-architecture/10.139-native-cohort-source-acquisition.org][10.139 Native cohort and source acquisition]] + +* Shared functional architecture rendering +- [[file:../../10-19-design/10-architecture/10.140-functional-architecture-rendering-and-opensysml.org][10.140 Functional renderer, themes and OpenSysML SDK]] + +- [[file:../../10-19-design/10-architecture/10.141-cross-language-diagram-renderer-research.org][10.141 Cross-language renderer research and layout correction]]. + +- [[file:../../10-19-design/10-architecture/10.142-declarative-render-extensibility-audit.org][10.142 Declarative static render extensibility audit]] — ownership, library reuse and cross-platform qualification. + +- [[file:../../10-19-design/10-architecture/10.143-sdk-model-adaptation-audit.org][10.143 SDK model adaptation: provenance, responsibility and closure]] + +- [[file:../../10-19-design/10-architecture/10.144-functional-themes-layouts-and-package-examples.org][10.144 Functional themes, measured headings/layout and package-owned examples]] + +- [[file:../../10-19-design/10-architecture/10.145-design-taste-public-contracts.org][10.145 Design / Taste public contracts and real design choices]] diff --git a/docs/00-09-project/00-documentation/00.02-local-package-links.org b/docs/00-09-project/00-documentation/00.02-local-package-links.org index 0fefe89..9b0da1f 100644 --- a/docs/00-09-project/00-documentation/00.02-local-package-links.org +++ b/docs/00-09-project/00-documentation/00.02-local-package-links.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 00.02 Local POO Flow Package Links #+LANGUAGE: en #+PROPERTY: JD_ID 00.02 diff --git a/docs/00-09-project/00-documentation/00.03-scheme-package-bootstrap.org b/docs/00-09-project/00-documentation/00.03-scheme-package-bootstrap.org index 95ba9df..e9ca080 100644 --- a/docs/00-09-project/00-documentation/00.03-scheme-package-bootstrap.org +++ b/docs/00-09-project/00-documentation/00.03-scheme-package-bootstrap.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 00.03 Scheme Package and Native Module Selection #+LANGUAGE: en #+PROPERTY: JD_ID 00.03 diff --git a/docs/10-19-design/10-architecture/10.01-core-model.org b/docs/10-19-design/10-architecture/10.01-core-model.org index 01e87e6..1bc95aa 100644 --- a/docs/10-19-design/10-architecture/10.01-core-model.org +++ b/docs/10-19-design/10-architecture/10.01-core-model.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.01 Core Engineering Design Model #+LANGUAGE: en #+PROPERTY: JD_ID 10.01 diff --git a/docs/10-19-design/10-architecture/10.02-domain-and-rules.org b/docs/10-19-design/10-architecture/10.02-domain-and-rules.org index 53d49a8..6089c46 100644 --- a/docs/10-19-design/10-architecture/10.02-domain-and-rules.org +++ b/docs/10-19-design/10-architecture/10.02-domain-and-rules.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.02 Engineering Domain Objects, Relations, and Finite Rule Templates #+LANGUAGE: en #+PROPERTY: JD_ID 10.02 diff --git a/docs/10-19-design/10-architecture/10.03-upstream-capabilities.org b/docs/10-19-design/10-architecture/10.03-upstream-capabilities.org index 31735f7..6010976 100644 --- a/docs/10-19-design/10-architecture/10.03-upstream-capabilities.org +++ b/docs/10-19-design/10-architecture/10.03-upstream-capabilities.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.03 Upstream Capabilities and Integration Boundary #+LANGUAGE: en #+PROPERTY: JD_ID 10.03 diff --git a/docs/10-19-design/10-architecture/10.04-evidence-driven-workflow.org b/docs/10-19-design/10-architecture/10.04-evidence-driven-workflow.org index 3c0e104..7c1b02c 100644 --- a/docs/10-19-design/10-architecture/10.04-evidence-driven-workflow.org +++ b/docs/10-19-design/10-architecture/10.04-evidence-driven-workflow.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.04 Evidence-Driven Engineering on ASCENT, POO, and QNT #+LANGUAGE: en #+PROPERTY: JD_ID 10.04 diff --git a/docs/10-19-design/10-architecture/10.05-agent-reasoning-and-design-convergence.org b/docs/10-19-design/10-architecture/10.05-agent-reasoning-and-design-convergence.org index f06c592..0d06ed0 100644 --- a/docs/10-19-design/10-architecture/10.05-agent-reasoning-and-design-convergence.org +++ b/docs/10-19-design/10-architecture/10.05-agent-reasoning-and-design-convergence.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.05 Agent Reasoning, Evidence Constraints, and Design Convergence #+LANGUAGE: en #+PROPERTY: JD_ID 10.05 diff --git a/docs/10-19-design/10-architecture/10.06-poo-ascent-integration.org b/docs/10-19-design/10-architecture/10.06-poo-ascent-integration.org index 8310cfa..74eb13c 100644 --- a/docs/10-19-design/10-architecture/10.06-poo-ascent-integration.org +++ b/docs/10-19-design/10-architecture/10.06-poo-ascent-integration.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.06 POO Module, Profile, and Scenario Integration with ASCENT Evidence #+LANGUAGE: en #+PROPERTY: JD_ID 10.06 diff --git a/docs/10-19-design/10-architecture/10.07-claim-witness-reference-contracts.org b/docs/10-19-design/10-architecture/10.07-claim-witness-reference-contracts.org index a395641..550943c 100644 --- a/docs/10-19-design/10-architecture/10.07-claim-witness-reference-contracts.org +++ b/docs/10-19-design/10-architecture/10.07-claim-witness-reference-contracts.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.07 Claim Identity, Witness Applicability, and T/V/A Reference Contracts #+LANGUAGE: en #+PROPERTY: JD_ID 10.07 diff --git a/docs/10-19-design/10-architecture/10.08-engineering-library-and-rust-trajectories.org b/docs/10-19-design/10-architecture/10.08-engineering-library-and-rust-trajectories.org index efaf4b4..1269457 100644 --- a/docs/10-19-design/10-architecture/10.08-engineering-library-and-rust-trajectories.org +++ b/docs/10-19-design/10-architecture/10.08-engineering-library-and-rust-trajectories.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.08 Shared Engineering Library and Rust Evidence Trajectories #+LANGUAGE: en #+PROPERTY: JD_ID 10.08 diff --git a/docs/10-19-design/10-architecture/10.09-rust-backpressure-memory-library-entry.org b/docs/10-19-design/10-architecture/10.09-rust-backpressure-memory-library-entry.org index 1a7b658..da65216 100644 --- a/docs/10-19-design/10-architecture/10.09-rust-backpressure-memory-library-entry.org +++ b/docs/10-19-design/10-architecture/10.09-rust-backpressure-memory-library-entry.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.09 Rust Backpressure and Memory Budget Library Entry #+LANGUAGE: en #+PROPERTY: JD_ID 10.09 diff --git a/docs/10-19-design/10-architecture/10.10-backpressure-capacity-stall-and-retry-trajectories.org b/docs/10-19-design/10-architecture/10.10-backpressure-capacity-stall-and-retry-trajectories.org index 24c8c78..f800c52 100644 --- a/docs/10-19-design/10-architecture/10.10-backpressure-capacity-stall-and-retry-trajectories.org +++ b/docs/10-19-design/10-architecture/10.10-backpressure-capacity-stall-and-retry-trajectories.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.10 Backpressure Capacity, Stall and Retry Trajectories #+LANGUAGE: en #+PROPERTY: JD_ID 10.10 diff --git a/docs/10-19-design/10-architecture/10.100-i3-project-profile-scenario-binding-and-unique-capture.org b/docs/10-19-design/10-architecture/10.100-i3-project-profile-scenario-binding-and-unique-capture.org index e67dfb9..230176b 100644 --- a/docs/10-19-design/10-architecture/10.100-i3-project-profile-scenario-binding-and-unique-capture.org +++ b/docs/10-19-design/10-architecture/10.100-i3-project-profile-scenario-binding-and-unique-capture.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.100 I3 Project Composition, Profile Selection and Unique Scenario Capture #+LANGUAGE: en #+PROPERTY: JD_ID 10.100 diff --git a/docs/10-19-design/10-architecture/10.101-i4-application-projection-and-accepted-ascent-view.org b/docs/10-19-design/10-architecture/10.101-i4-application-projection-and-accepted-ascent-view.org index bd1989e..b70ed5f 100644 --- a/docs/10-19-design/10-architecture/10.101-i4-application-projection-and-accepted-ascent-view.org +++ b/docs/10-19-design/10-architecture/10.101-i4-application-projection-and-accepted-ascent-view.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.101 I4 Application Projection and Accepted ASCENT View #+LANGUAGE: en #+PROPERTY: JD_ID 10.101 diff --git a/docs/10-19-design/10-architecture/10.102-i5-sysml-selection-materialization-and-validation.org b/docs/10-19-design/10-architecture/10.102-i5-sysml-selection-materialization-and-validation.org index 895c478..8f483a5 100644 --- a/docs/10-19-design/10-architecture/10.102-i5-sysml-selection-materialization-and-validation.org +++ b/docs/10-19-design/10-architecture/10.102-i5-sysml-selection-materialization-and-validation.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.102 I5 SysML Selection, Materialization and Validation #+LANGUAGE: en #+PROPERTY: JD_ID 10.102 diff --git a/docs/10-19-design/10-architecture/10.103-i6-joint-acceptance-and-explicit-sysml-publication.org b/docs/10-19-design/10-architecture/10.103-i6-joint-acceptance-and-explicit-sysml-publication.org index ab1f1f9..403261f 100644 --- a/docs/10-19-design/10-architecture/10.103-i6-joint-acceptance-and-explicit-sysml-publication.org +++ b/docs/10-19-design/10-architecture/10.103-i6-joint-acceptance-and-explicit-sysml-publication.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.103 I6 Joint Slice Acceptance and Explicit SysML Publication #+LANGUAGE: en #+PROPERTY: JD_ID 10.103 diff --git a/docs/10-19-design/10-architecture/10.104-declarative-slice-coherence-and-implementation-gates.org b/docs/10-19-design/10-architecture/10.104-declarative-slice-coherence-and-implementation-gates.org index d078f57..0782d85 100644 --- a/docs/10-19-design/10-architecture/10.104-declarative-slice-coherence-and-implementation-gates.org +++ b/docs/10-19-design/10-architecture/10.104-declarative-slice-coherence-and-implementation-gates.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.104 Declarative Slice Coherence Audit and Implementation Gates #+LANGUAGE: en #+PROPERTY: JD_ID 10.104 diff --git a/docs/10-19-design/10-architecture/10.105-i0-dependencies-prelude-build-load-and-testing.org b/docs/10-19-design/10-architecture/10.105-i0-dependencies-prelude-build-load-and-testing.org index e452880..80ffb6e 100644 --- a/docs/10-19-design/10-architecture/10.105-i0-dependencies-prelude-build-load-and-testing.org +++ b/docs/10-19-design/10-architecture/10.105-i0-dependencies-prelude-build-load-and-testing.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.105 I0 Dependencies, Prelude, Build/Load and Testing Entries #+LANGUAGE: en #+PROPERTY: JD_ID 10.105 diff --git a/docs/10-19-design/10-architecture/10.106-i1-normalized-context-scope-realization-and-self-binding.org b/docs/10-19-design/10-architecture/10.106-i1-normalized-context-scope-realization-and-self-binding.org index fc9e931..3de4531 100644 --- a/docs/10-19-design/10-architecture/10.106-i1-normalized-context-scope-realization-and-self-binding.org +++ b/docs/10-19-design/10-architecture/10.106-i1-normalized-context-scope-realization-and-self-binding.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.106 I1 Normalized Context, Scope Realization and Self Binding #+LANGUAGE: en #+PROPERTY: JD_ID 10.106 diff --git a/docs/10-19-design/10-architecture/10.107-implementation-progress-and-execution-gates.org b/docs/10-19-design/10-architecture/10.107-implementation-progress-and-execution-gates.org index 31e6611..3850f24 100644 --- a/docs/10-19-design/10-architecture/10.107-implementation-progress-and-execution-gates.org +++ b/docs/10-19-design/10-architecture/10.107-implementation-progress-and-execution-gates.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.107 Implementation Progress and Execution Gates #+LANGUAGE: en #+PROPERTY: JD_ID 10.107 diff --git a/docs/10-19-design/10-architecture/10.11-live-capacity-full-cleanup-and-joint-budgets.org b/docs/10-19-design/10-architecture/10.11-live-capacity-full-cleanup-and-joint-budgets.org index 9e47160..745ef48 100644 --- a/docs/10-19-design/10-architecture/10.11-live-capacity-full-cleanup-and-joint-budgets.org +++ b/docs/10-19-design/10-architecture/10.11-live-capacity-full-cleanup-and-joint-budgets.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.11 Live Capacity, Full Cleanup and Joint Budgets #+LANGUAGE: en #+PROPERTY: JD_ID 10.11 diff --git a/docs/10-19-design/10-architecture/10.118-domain-property-testing-and-evidence-trajectories.org b/docs/10-19-design/10-architecture/10.118-domain-property-testing-and-evidence-trajectories.org index c47da85..37d0008 100644 --- a/docs/10-19-design/10-architecture/10.118-domain-property-testing-and-evidence-trajectories.org +++ b/docs/10-19-design/10-architecture/10.118-domain-property-testing-and-evidence-trajectories.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.118 Domain Property Testing and Evidence Trajectories #+LANGUAGE: en #+PROPERTY: JD_ID 10.118 diff --git a/docs/10-19-design/10-architecture/10.119-project-component-feature-and-example-boundaries.org b/docs/10-19-design/10-architecture/10.119-project-component-feature-and-example-boundaries.org index 5ec333f..e054b5a 100644 --- a/docs/10-19-design/10-architecture/10.119-project-component-feature-and-example-boundaries.org +++ b/docs/10-19-design/10-architecture/10.119-project-component-feature-and-example-boundaries.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.119 Project, Component, Feature and Example Boundaries #+LANGUAGE: en #+PROPERTY: JD_ID 10.119 diff --git a/docs/10-19-design/10-architecture/10.12-gateway-library-registration-and-runtime-dependencies.org b/docs/10-19-design/10-architecture/10.12-gateway-library-registration-and-runtime-dependencies.org index 6941336..b428a87 100644 --- a/docs/10-19-design/10-architecture/10.12-gateway-library-registration-and-runtime-dependencies.org +++ b/docs/10-19-design/10-architecture/10.12-gateway-library-registration-and-runtime-dependencies.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.12 Gateway Library Registration and Runtime Dependencies #+LANGUAGE: en #+OPTIONS: toc:2 num:t diff --git a/docs/10-19-design/10-architecture/10.120-yuanxu-package-and-record-ownership.org b/docs/10-19-design/10-architecture/10.120-yuanxu-package-and-record-ownership.org index e9c4630..77c2baa 100644 --- a/docs/10-19-design/10-architecture/10.120-yuanxu-package-and-record-ownership.org +++ b/docs/10-19-design/10-architecture/10.120-yuanxu-package-and-record-ownership.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.120 Yuanxu Package and Native Record Ownership #+STARTUP: overview #+OPTIONS: toc:2 num:nil diff --git a/docs/10-19-design/10-architecture/10.121-native-dependency-cohort-and-expression-alignment.org b/docs/10-19-design/10-architecture/10.121-native-dependency-cohort-and-expression-alignment.org index 4ca5e4b..476ac15 100644 --- a/docs/10-19-design/10-architecture/10.121-native-dependency-cohort-and-expression-alignment.org +++ b/docs/10-19-design/10-architecture/10.121-native-dependency-cohort-and-expression-alignment.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.121 Native Dependency Cohort and Expression Alignment #+STARTUP: overview #+OPTIONS: toc:2 num:nil diff --git a/docs/10-19-design/10-architecture/10.122-declarative-library-models-and-functional-projection.org b/docs/10-19-design/10-architecture/10.122-declarative-library-models-and-functional-projection.org index a635bb7..69234ed 100644 --- a/docs/10-19-design/10-architecture/10.122-declarative-library-models-and-functional-projection.org +++ b/docs/10-19-design/10-architecture/10.122-declarative-library-models-and-functional-projection.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.122 Declarative Library Models and Functional Projection #+STARTUP: overview #+OPTIONS: toc:2 num:nil diff --git a/docs/10-19-design/10-architecture/10.123-layer-declaration-and-evidence-alignment.org b/docs/10-19-design/10-architecture/10.123-layer-declaration-and-evidence-alignment.org index 4099a41..272de32 100644 --- a/docs/10-19-design/10-architecture/10.123-layer-declaration-and-evidence-alignment.org +++ b/docs/10-19-design/10-architecture/10.123-layer-declaration-and-evidence-alignment.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.123 Layer Declaration and Evidence Alignment #+STARTUP: overview #+OPTIONS: toc:2 num:nil diff --git a/docs/10-19-design/10-architecture/10.124-aitia-review-history-and-recovery-projections.org b/docs/10-19-design/10-architecture/10.124-aitia-review-history-and-recovery-projections.org index 1a6e1df..df2d770 100644 --- a/docs/10-19-design/10-architecture/10.124-aitia-review-history-and-recovery-projections.org +++ b/docs/10-19-design/10-architecture/10.124-aitia-review-history-and-recovery-projections.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.124 Aitia Review, History and Recovery Projections #+STARTUP: overview #+OPTIONS: toc:2 num:nil diff --git a/docs/10-19-design/10-architecture/10.125-native-ascent-compiler-product-admission.org b/docs/10-19-design/10-architecture/10.125-native-ascent-compiler-product-admission.org index 658c5e0..facfe32 100644 --- a/docs/10-19-design/10-architecture/10.125-native-ascent-compiler-product-admission.org +++ b/docs/10-19-design/10-architecture/10.125-native-ascent-compiler-product-admission.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.125 Native ASCENT Compiler Product Admission #+STARTUP: overview #+OPTIONS: toc:2 num:nil diff --git a/docs/10-19-design/10-architecture/10.126-cold-native-dependency-budget.org b/docs/10-19-design/10-architecture/10.126-cold-native-dependency-budget.org index 5c0b1d6..7b6ad9b 100644 --- a/docs/10-19-design/10-architecture/10.126-cold-native-dependency-budget.org +++ b/docs/10-19-design/10-architecture/10.126-cold-native-dependency-budget.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.126 Cold Native Dependency Budget #+STARTUP: overview #+OPTIONS: toc:2 num:nil diff --git a/docs/10-19-design/10-architecture/10.126-cold-native-dependency-observations.json.license b/docs/10-19-design/10-architecture/10.126-cold-native-dependency-observations.json.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/10-19-design/10-architecture/10.126-cold-native-dependency-observations.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/10-19-design/10-architecture/10.127-machine-derived-native-build-concurrency.org b/docs/10-19-design/10-architecture/10.127-machine-derived-native-build-concurrency.org index ae75f29..c6cf8e2 100644 --- a/docs/10-19-design/10-architecture/10.127-machine-derived-native-build-concurrency.org +++ b/docs/10-19-design/10-architecture/10.127-machine-derived-native-build-concurrency.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.127 Machine-Derived Native Build Concurrency #+STARTUP: overview #+OPTIONS: toc:2 num:nil diff --git a/docs/10-19-design/10-architecture/10.127-native-poo-machine-admission.json.license b/docs/10-19-design/10-architecture/10.127-native-poo-machine-admission.json.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/10-19-design/10-architecture/10.127-native-poo-machine-admission.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/10-19-design/10-architecture/10.128-native-dependency-cohort-upgrade.org b/docs/10-19-design/10-architecture/10.128-native-dependency-cohort-upgrade.org index d56ca6f..99a461b 100644 --- a/docs/10-19-design/10-architecture/10.128-native-dependency-cohort-upgrade.org +++ b/docs/10-19-design/10-architecture/10.128-native-dependency-cohort-upgrade.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.128 Native Dependency Cohort Upgrade #+LANGUAGE: en #+STARTUP: overview diff --git a/docs/10-19-design/10-architecture/10.129-ascent-native-library-modules.org b/docs/10-19-design/10-architecture/10.129-ascent-native-library-modules.org index cde9657..9f15116 100644 --- a/docs/10-19-design/10-architecture/10.129-ascent-native-library-modules.org +++ b/docs/10-19-design/10-architecture/10.129-ascent-native-library-modules.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.129 ASCENT Native Library Modules and Branch Custody #+LANGUAGE: en #+OPTIONS: toc:2 num:nil diff --git a/docs/10-19-design/10-architecture/10.13-real-method-results-and-agent-evidence-loop.org b/docs/10-19-design/10-architecture/10.13-real-method-results-and-agent-evidence-loop.org index c380aa4..9a57e94 100644 --- a/docs/10-19-design/10-architecture/10.13-real-method-results-and-agent-evidence-loop.org +++ b/docs/10-19-design/10-architecture/10.13-real-method-results-and-agent-evidence-loop.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.13 Real Method Results and the LLM-Based AI Agent Evidence Loop #+LANGUAGE: en #+PROPERTY: JD_ID 10.13 diff --git a/docs/10-19-design/10-architecture/10.130-native-compiler-capacity-and-cold-phases.org b/docs/10-19-design/10-architecture/10.130-native-compiler-capacity-and-cold-phases.org index a44bcea..c917874 100644 --- a/docs/10-19-design/10-architecture/10.130-native-compiler-capacity-and-cold-phases.org +++ b/docs/10-19-design/10-architecture/10.130-native-compiler-capacity-and-cold-phases.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.130 Native Compiler Capacity and Cold Phase Boundaries #+LANGUAGE: en #+OPTIONS: toc:2 num:nil diff --git a/docs/10-19-design/10-architecture/10.131-ascent-domain-owned-module-topology.org b/docs/10-19-design/10-architecture/10.131-ascent-domain-owned-module-topology.org index b7e715c..d7c659a 100644 --- a/docs/10-19-design/10-architecture/10.131-ascent-domain-owned-module-topology.org +++ b/docs/10-19-design/10-architecture/10.131-ascent-domain-owned-module-topology.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.131 ASCENT Domain-Owned Module Topology #+LANGUAGE: en #+STARTUP: overview diff --git a/docs/10-19-design/10-architecture/10.132-native-type-and-output-boundary-alignment.org b/docs/10-19-design/10-architecture/10.132-native-type-and-output-boundary-alignment.org index 64e3b78..79ac2d5 100644 --- a/docs/10-19-design/10-architecture/10.132-native-type-and-output-boundary-alignment.org +++ b/docs/10-19-design/10-architecture/10.132-native-type-and-output-boundary-alignment.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.132 Native Types and Output Boundary Alignment #+LANGUAGE: en #+STARTUP: overview diff --git a/docs/10-19-design/10-architecture/10.133-native-evidence-method-contracts.org b/docs/10-19-design/10-architecture/10.133-native-evidence-method-contracts.org index 2a9fc7e..34872e8 100644 --- a/docs/10-19-design/10-architecture/10.133-native-evidence-method-contracts.org +++ b/docs/10-19-design/10-architecture/10.133-native-evidence-method-contracts.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.133 Native Evidence Method Contracts #+LANGUAGE: en #+STARTUP: overview diff --git a/docs/10-19-design/10-architecture/10.134-owner-bound-scenario-admission.org b/docs/10-19-design/10-architecture/10.134-owner-bound-scenario-admission.org index b26ecd5..cb4c829 100644 --- a/docs/10-19-design/10-architecture/10.134-owner-bound-scenario-admission.org +++ b/docs/10-19-design/10-architecture/10.134-owner-bound-scenario-admission.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.134 Owner-Bound Scenario Admission #+LANGUAGE: en #+STARTUP: overview diff --git a/docs/10-19-design/10-architecture/10.135-engineering-ownership-and-native-drivers.org b/docs/10-19-design/10-architecture/10.135-engineering-ownership-and-native-drivers.org index 45b31e5..4e330d9 100644 --- a/docs/10-19-design/10-architecture/10.135-engineering-ownership-and-native-drivers.org +++ b/docs/10-19-design/10-architecture/10.135-engineering-ownership-and-native-drivers.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.135 Engineering Ownership and Native Drivers #+LANGUAGE: en #+STARTUP: overview diff --git a/docs/10-19-design/10-architecture/10.136-scheme-drivers-and-rust-only-projects.org b/docs/10-19-design/10-architecture/10.136-scheme-drivers-and-rust-only-projects.org index 964e387..b840c9b 100644 --- a/docs/10-19-design/10-architecture/10.136-scheme-drivers-and-rust-only-projects.org +++ b/docs/10-19-design/10-architecture/10.136-scheme-drivers-and-rust-only-projects.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.136 Scheme Drivers and Rust-Only Engineering Projects #+LANGUAGE: en #+STARTUP: overview diff --git a/docs/10-19-design/10-architecture/10.137-domain-owned-catalogs-and-native-drivers.org b/docs/10-19-design/10-architecture/10.137-domain-owned-catalogs-and-native-drivers.org index 1a890e9..dd7d58d 100644 --- a/docs/10-19-design/10-architecture/10.137-domain-owned-catalogs-and-native-drivers.org +++ b/docs/10-19-design/10-architecture/10.137-domain-owned-catalogs-and-native-drivers.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.137 Domain-Owned Catalogs and Native Drivers #+LANGUAGE: en #+STARTUP: overview diff --git a/docs/10-19-design/10-architecture/10.138-native-package-cohort-and-ci-provenance.org b/docs/10-19-design/10-architecture/10.138-native-package-cohort-and-ci-provenance.org index 425b9dc..ecebe71 100644 --- a/docs/10-19-design/10-architecture/10.138-native-package-cohort-and-ci-provenance.org +++ b/docs/10-19-design/10-architecture/10.138-native-package-cohort-and-ci-provenance.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.138 Native Package Cohort and CI Provenance #+LANGUAGE: en #+STARTUP: overview diff --git a/docs/10-19-design/10-architecture/10.139-native-cohort-source-acquisition.org b/docs/10-19-design/10-architecture/10.139-native-cohort-source-acquisition.org index 89ded5d..c057587 100644 --- a/docs/10-19-design/10-architecture/10.139-native-cohort-source-acquisition.org +++ b/docs/10-19-design/10-architecture/10.139-native-cohort-source-acquisition.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.139 Native Cohort and Source Acquisition #+LANGUAGE: en #+STARTUP: overview diff --git a/docs/10-19-design/10-architecture/10.14-rust-performance-library-and-mechanism-cases.org b/docs/10-19-design/10-architecture/10.14-rust-performance-library-and-mechanism-cases.org index f618e35..6af68f5 100644 --- a/docs/10-19-design/10-architecture/10.14-rust-performance-library-and-mechanism-cases.org +++ b/docs/10-19-design/10-architecture/10.14-rust-performance-library-and-mechanism-cases.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.14 Rust Performance Library and Mechanism Cases #+LANGUAGE: en #+PROPERTY: JD_ID 10.14 diff --git a/docs/10-19-design/10-architecture/10.140-functional-architecture-rendering-and-opensysml.org b/docs/10-19-design/10-architecture/10.140-functional-architecture-rendering-and-opensysml.org new file mode 100644 index 0000000..ee78a81 --- /dev/null +++ b/docs/10-19-design/10-architecture/10.140-functional-architecture-rendering-and-opensysml.org @@ -0,0 +1,210 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + +#+TITLE: 10.140 Question-driven D2 Rendering and OpenSysML Model Views +#+LANGUAGE: en +#+PROPERTY: JD_ID 10.140 +#+OPTIONS: toc:2 num:nil + +* Ownership and decision +:PROPERTIES: +:CUSTOM_ID: architecture-rendering-owner +:END: +The shared functional TypeScript rendering Library belongs to Deterministic +Engineering. Gateway/Weaver consumes it and owns project acquisition, local +presentation, review and publication. This work starts from main253a926 in a new +branch; the original dirty workspace and active downstream checkout are preserved. +The donor was Weaver's uncommitted dev/d2 working snapshot in a checkout at +92f8848640ff53a360430178ba7adc0894793d83, not content published by that commit. + +D2 remains the language and rendering engine. Custom React scene reconstruction, +manual ELK packing and text-outline machinery have been removed. Official D2 +compile/render owns layout and SVG. C4 and Structurizr are +classification and communication references, not additional DSLs or dependencies. +The Gerbil package, compiler and SDK are unchanged. The sole package version +source is packages/render/package.json; namespaces stay stable. + +* Questions, model and evidence associations +:PROPERTIES: +:CUSTOM_ID: architecture-rendering-contracts +:END: +Every diagram answers an explicit question for an audience and scope. A useful +association is Question -> model/obligation selection -> admitted query/evidence +references -> view candidate -> review/publication decision. LLMs propose +questions, model/view candidates and explanations. OpenSysML owns model operations; +ASCENT owns deterministic queries; Core/Scenario own capture/currentness; Aitia +owns review. The renderer cannot issue evidence or authorize publication. + +| Required view field | Meaning | Boundary | +|---------------------+---------+----------| +| question.ref / text | Existing question identity and wording | Included in output and fingerprint | +| basis.captureRef | Existing capture or explicitly labeled design candidate | Does not create or authenticate C | +| basis.modelRefs | Selected model/source references | Does not establish model validation | +| basis.obligationRefs | Existing obligations | No second duty ledger | +| basis.evidenceRefs | Existing evidence references; may be empty | Empty references cannot become a pass | +| source/title/purpose/kind | Explicit view selection | Architecture/workflow kept separate | +| sources/theme | Captured import texts and official D2 options | Full supplied input footprint | + +These TS reference fields project existing contracts. FormationProfile/Scenario +in scenarios/project-formation already own intent, model root, catalog/mapping, +policy and repository capture. Their capture may be blocked. This package does +not invent a Question Contract or pretend that a rendering snapshot issues +C. Reference resolution, accepted Q, source trust and freshness remain caller +responsibilities. Missing obligations, conflicts and counterevidence must survive +selection; selecting a flattering image cannot discharge an obligation. + +Architecture answers ownership, components, interfaces, dependencies or deployment. +Workflow answers ordering, branches, events and recovery. Explanatory overviews +can refer to both as distinct titled sections. Dependency edges must not silently +become execution order. Architecture kinds are system/data/assurance; workflow +kinds are routing/flow/sequence/state. Kinds classify intended views; D2 +notation supplies their actual semantics. Sequence diagrams use sequence_diagram, +including its actor lifelines. No TypeScript card layout replaces it. + +* Functional files and call boundaries +:PROPERTIES: +:CUSTOM_ID: architecture-rendering-functions +:END: +| File under packages/render | Responsibility | +|-------------------------------------------+----------------| +| src/source/types.ts | Readonly QuestionRef, ViewBasis and distinct purpose variants | +| src/source/catalog.ts | Validate paths/selection and freeze supplied snapshot | +| src/pipeline.ts | renderView composes explicit compile/SVG effects; retains IDs | +| src/worker.ts | Official D2 compile/render effects | +| src/index.ts | Public API; at most two workers, always terminated; failure rejects result | +| src/theme.ts and themes/ | Independent options and optional D2 profiles | +| src/opensysml.ts | Real SDK call and pure explicit reflow projection | +| packages/render/examples | Actual file-package consumer; project reads and candidate writes | + +The Library has no directory walker, global scene engine, semantic label guessing, +custom compiler, FP runtime, evidence registry or publication database. Snapshots +are immutable; ordinary functions, readonly records, unions and Promise suffice. +Bun is the qualified runtime. No Node-only compatibility is claimed. + +* Independent themes +:PROPERTIES: +:CUSTOM_ID: architecture-rendering-themes +:END: +D2 profiles are optional defaults exposed by standardThemes(). Downstream can +supply its own import closure, classes, styles, icons and layout. The ./theme +export exposes immutable official D2 options; extendTheme composes overrides. +Classes remain open strings rather than a closed semantic-role palette. Theme +changes invalidate render reuse, not model identity or proof meaning. +SVG is primary. The default PNG conversion was removed after real cases exposed font substitution +and text overflow. Raster export requires separately qualified browser rendering. External fonts/images require separately qualified +resource closure for hermetic publication. A digest is not authentication. + +* Actual OpenSysML SDK relationship +:PROPERTIES: +:CUSTOM_ID: architecture-rendering-opensysml +:END: +The optional peer/dev dependency is the published @openmbee/opensysml0.11.0. +Research was pinned at d7e94f69bbb4324e4829afad1a40f67ad5b006d4; only fields +present in the installed package are used. +[[https://github.com/Open-MBEE/OpenSysML/tree/d7e94f69bbb4324e4829afad1a40f67ad5b006d4/client/node][Official TypeScript SDK]]. + +captureOpenSysMLView invokes Connection.renderView(modelHash, viewName, options). +projectOpenSysMLView explicitly reflows supported nodes/edges to D2 and retains +model/view identity, original IDs, ownership, origins, full SDK response and its +fingerprint. Ports, compartments, tables/notes, stand-ins, collapsed nodes, +dangling edges and ownership cycles are refused rather than silently dropped. +SDK errors propagate. There is no local SysML parser or alternative transport. +Tests use the actual public SDK JSON decoder and real D2 rendering. They do not +establish live service/WASM parse or model validation. A supplied modelHash is +only a reference until existing project source checks authenticate its origin. + +* Current repository as the real Case +:PROPERTIES: +:CUSTOM_ID: architecture-rendering-cases +:END: +The cases command renders three original D2 files unchanged, with ELK, +theme0 and pad24 matching their documented convention. Receipts retain original +source hashes, element IDs and question/model/obligation links. + +| Original view | Review question | Content status | +|---------------+-----------------+----------------| +| 90.91 engineering-content-contracts | Who publishes, selects and captures architectural/document/decision content? | Existing design; rendering only | +| 90.120 ascent-domain-owned-module-topology | Which domain owns each module and what remains transitional? | Existing target; not a fresh implementation audit | +| 90.84 sysml-interoperability | How do observations reach reasoning and review without granting approval? | Existing design; no live model execution | + +Existing diagrams may mix architectural and workflow concerns. First-pass +rendering preserves their source so a content problem is distinguishable from a +renderer regression. A question-led redesign is a separate reviewed content change. +The new 90.129 component architecture and 90.130 authoring workflow are separate +outputs. Their capture references explicitly name design candidates and evidence +references remain empty; they do not impersonate C, accepted Q or review R. + +* Verification, migration and open gates +:PROPERTIES: +:CUSTOM_ID: architecture-rendering-migration +:END: +Typecheck and tests cover immutable footprints, changed-question rejection, +source/import refusal, nested D2, sequence notation, independent themes, SDK +projection/refusal and worker completion. A real installed file dependency and +an independent packed consumer exercise package boundaries. CI runs package tests +and examples on Linux and macOS. Local and remote receipts must remain distinct. + +Correctness means D2 semantics, preserved references and refusal of lossy +SDK projection. Whether question-led LLM selection improves explanatory quality +is a research hypothesis requiring human comparison, not a rendering pass claim. +Open gates include live model validation; trusted C/accepted Q integration; +question-to-element evidence coverage; authorized publication; external asset +closure; downstream Gateway migration; and CI acceptance for this revision. +No full automatic LLM orchestration, independent review or delivery is implemented. + +* References +- [[https://d2lang.com/tour/themes][D2 themes]] and [[https://d2lang.com/tour/sequence-diagrams][sequence diagrams]]. +- [[https://c4model.com/diagrams][C4 scopes]] and [[https://c4model.com/diagrams/notation][notation guidance]], as references only. +- [[https://docs.structurizr.com/dsl][Structurizr model/view/style separation]], as a reference only. + +* TS visual composition is a first-class responsibility +The generic D2 adapter alone does not satisfy the visual framework requirement. +src/presentation.ts implements composePresentation: pure SVG composition of the +question, answer, diagram, explanations, evidence context and limits. +The separate presentation-theme export owns typography, surfaces, status colors +and spacing. This is independent of themes/ and D2 compile/render options. + +Three real cases produce two themes each: upstream blue/purple and downstream +green/warm. D2 source and diagram bytes remain identical. These demonstrate +TS-owned visual hierarchy rather than only returning engine SVG. Architecture +and workflow remain separate page purposes. Explanation status is project-authored; +a referenced supported label is not independently authenticated assurance. Current +examples use design or pending. Question-to-element highlighting, further page +compositions, multilingual shaping and verified evidence decoration remain open. +The first compositor is a concrete contract, not every possible explanatory genre. + +* Local qualification receipt +The final D2 and TS composition suite passes19 cases, with strict typecheck +and actionlint clean. A packed independent consumer passes using only the public +package and presentation-theme exports. Three unchanged historical repository +sources render successfully; three two-theme explanatory pages and one focused +two-theme responsibility page are generated. Browser inspection confirms native +embedded fonts and complete responsive page composition. The saved screenshot +is a browser preview, not a separate runtime PNG export capability. + +Focused view90.131 is explicitly a concise content candidate derived from90.91 +and10.31. Its question is who publishes/selects/captures; its explanation associates +Library, Profile and Scenario responsibilities. It does not infer real evidence +or claim the live OpenSysML/ASCENT/Aitia chain has run. Remote CI is a distinct gate. + +* Icon-led infographic refinement +The initial page compositor was too document-like. The current composition uses +short labels, explicit node icons, visual grouping, icon-led responsibility tiles +and a compact model/obligation/evidence strip. Full references remain in SVG +metadata and sidecar receipts rather than occupying the main visual hierarchy. + +The ./icons export supplies official Lucide static SVG assets and an IconAsset +contract. Project input explicitly binds icons to nodes and explanations; no label +keyword inference assigns semantics. Downstream may replace any asset or the +presentation icon set. Icons are embedded as data URIs, not fetched remotely. +D2 still owns node geometry and connectors; TS owns the surrounding visual +explanation, typography, icon selection and independent presentation theme. +This compact composition replaces the initial prose-heavy report arrangement. + +The icon implementation uses [[https://github.com/lucide-icons/lucide/blob/main/docs/guide/installation.md][official Lucide static SVG exports]] and D2’s [[https://d2lang.com/tour/icons/][icon support]]. SVG defaults are embedded with explicit bindings; no remote icon fetch is needed. + +* Layout research supersedes prototype acceptance +[[file:10.141-cross-language-diagram-renderer-research.org][10.141]] records the cross-language architecture/renderer survey. The current +compositor is a retained prototype, not the accepted visual architecture. D2 is a +primary authoring language; its ecosystem does not bound rendering research. diff --git a/docs/10-19-design/10-architecture/10.141-cross-language-diagram-renderer-research.org b/docs/10-19-design/10-architecture/10.141-cross-language-diagram-renderer-research.org new file mode 100644 index 0000000..b8149fd --- /dev/null +++ b/docs/10-19-design/10-architecture/10.141-cross-language-diagram-renderer-research.org @@ -0,0 +1,364 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + +#+TITLE: 10.141 Cross-language Diagram Rendering Research and Layout Correction +#+LANGUAGE: en +#+PROPERTY: JD_ID 10.141 +#+OPTIONS: toc:2 num:nil + +* Scope correction +D2 is an authoring language and a primary project input. It does not delimit the +research ecosystem or prescribe every downstream visual rendering decision. +Architecture diagramming, graph visualization, constraint-based drawing, routing, +icon systems and AI-assisted diagram design must be studied across languages. +C4/Structurizr remain viewpoint references. No additional modeling DSL or proof +ledger is selected by this research. + +The c8b95c0 implementation in10.140 is a functional prototype, not an accepted +visual baseline. Its19 tests establish API/input properties, not layout quality. +Its TS compositor primarily surrounds finished D2 geometry. Adding icons or +shrinking margins cannot give that compositor control of graph-internal layout. +The current samples expose poor spatial balance, small labels after fitting, +overlarge fixed panels and repeated responsibility explanations. + +* Sources inspected through GitHub +The inspection used general architecture-diagram and diagram-renderer/layout +queries, not a D2-only query. Stars aided discovery only; they are not selection +criteria. Third-party skill text was read as source material, not installed or +executed as agent instructions. Project claims are not treated as local receipts. + +| Project | Actual inspected surface | Capability to learn | Selection status | +|---------+--------------------------+--------------------+------------------| +| [[https://github.com/antvis/G6][AntV G6]] | README; packages/g6/src/runtime/layout.ts | Separate graph data, layout stages, nodes/edges/combos, rendering and interactions | Candidate; no local runtime qualification | +| [[https://github.com/penrose/penrose][Penrose]] | README Domain/Substance/Style example; official constraint documentation | Separate domain meaning, instance and visual constraints; express containment/overlap/objectives | Research reference; no solver dependency selected | +| [[https://github.com/mingrammer/diagrams][Diagrams]] | README examples and provider structure | Icon-first node vocabulary, clusters and concise architectural labels | Visual reference; Python/Graphviz not automatically introduced | +| [[https://github.com/awslabs/diagram-as-code/tree/4ec965cf8bdb309d714bc6202e7954fc43338bbe][AWS Diagram-as-code]] | doc/best-practices.md; introduction image | Orientations by diagram purpose, nested resource boundaries and grouped redundancy | Visual/layout reference | +| [[https://github.com/likec4/likec4/tree/d1d61155215ceebd909cf217eab32ebeb6a35f1e][LikeC4]] | examples/cloud-system/views.c4; demo-rank-for-better-layout.c4 | Explicit include/exclude, scoped views and rank hints | Projection reference; its DSL is not a new dependency | +| [[https://github.com/lukilabs/beautiful-mermaid/tree/2ac8bbbb060ca0a65a6a21f3200bd99b1587b488][Beautiful Mermaid]] | README; src/theme.ts | Small composable color contract; theme independently applied to SVG primitives | TS theme reference; Mermaid is not a replacement input requirement | +| [[https://github.com/xyflow/xyflow][XYFlow]] | README package boundaries and usage | Custom nodes/edges and interactive inspection | Interactive candidate; editor does not alone solve offline layout | +| [[https://github.com/Agents365-ai/drawio-skill/tree/57270820d3cd71cbdf4fb6b2f7091d4fb37bb019][drawio-skill]] | README; scripts/diagram_ir.py; architecture-studio example inventory | Separate meaning/provenance/geometry, multiple projections and visual self-check | Research reference; no copied source/evidence system | +| [[https://github.com/Cocoon-AI/architecture-diagram-generator/tree/4b9087d55268c79a935105439dbcd37b630fc3f3][Architecture Diagram Generator]] | examples/web-app.html and web-app.png; template inventory | Study actual visual hierarchy and compact layer composition beyond one DSL ecosystem | Visual reference; fixed HTML template is not itself a reusable renderer | + +Penrose's [[https://penrose.ink/docs/tutorial/constraints/][constraint documentation]] describes optimization objectives; that is not a +proof that its solver suits architecture edge routing. G6's documented render +backends do not establish font, export or cold-start acceptance in our runtime. +XYFlow's UI extensibility must be evaluated independently of automatic placement. + +* Correct responsibility split +The intended Library has three independently testable concerns: +1. Question/model projection: use actual OpenSysML and D2 structures plus existing + project query/evidence associations to select what the reader needs to see. +2. Layout and visual grammar: group boundaries, choose topology, size nodes from + icons/labels, route edges, place callouts and keep useful whitespace. +3. Rendering/presentation: draw the placed view through reusable SVG/Canvas + capabilities with downstream themes, icon assets and output profiles. + +The existing D2 compiler remains a real source adapter and a comparison +baseline. OpenSysML retains model semantics. ASCENT retains deterministic facts +and inference; Aitia retains review. A view projection can carry their original +IDs and references without creating a new modeling language, evidence database +or self-appointed authority. A private renderer may use a mature engine object; +public Library composition can remain functional and immutable. + +No engine is selected by README popularity. G6, existing layout engines and +constraint-oriented alternatives must be compared on actual repository content +and export/runtime constraints before adding a dependency. Pure static output +and interactive inspection are separate requirements and may need distinct +adapters rather than one mandatory browser application. + +* Same-case comparison protocol +Use repository90.91,90.120 and90.84 as frozen semantic baselines. Preserve their +original views for regression. Derive question-scoped architecture, workflow and +explanation candidates explicitly; record any omitted/aggregated element and +keep required obligations reachable. Do not improve density by deleting meaning. + +For each scope, compare: +- The existing rendering baseline. +- The current TS compositor baseline, retaining its visible shortcomings. +- Candidate visual grammars backed by mature layout/render capabilities. + +Keep the same question, model references, required nodes/relations and evidence +status across a comparison. Theme and engine identity are independent recorded +inputs. A compact static figure, an explanatory infographic and an interactive +inspection view must not all be forced into the same tall report frame. + +* Acceptance and research questions +| Category | Acceptance / observation | +|----------+--------------------------| +| Semantic correctness | Preserve identity, containment, relation direction and required obligations; disclose aggregation and unsupported notation | +| Mechanical drawing checks | Detect clipped text, unintended overlaps, invalid geometry, invisible required content and routes through unrelated nodes | +| Typography | Compare actual output at its intended viewing size; enlarging the canvas cannot compensate for unreadably small labels | +| Routing | Compare crossings, shared paths, label collisions and unnecessarily long connectors; port semantics must survive | +| Space | Compare occupied bounds, group padding and aspect ratio; use these as diagnostics, not a universal maximum-density rule | +| Visual vocabulary | Icons encode actual kinds; shape, grouping, color and short labels have consistent meaning and an explicit legend where needed | +| Evidence | Missing, conflict and pending remain distinct; visual status cannot establish an accepted Q or review R | +| Reproduction | Record actual engine, theme/assets, source closure and layout options/seed; distinguish reproducibility from aesthetic preference | +| Human comparison | Ask whether each view answers its question faster and more accurately; do not label subjective quality as a formal proof | + +LLMs may propose view scope, constraints and alternative candidates, then inspect +rendered results for visual defects. Deterministic validation protects semantics +and mechanical requirements. Human comparison establishes whether an explanation +actually reduces reading burden. ASCENT is not an aesthetic oracle. + +* Implementation order +1. Preserve the current prototype, original sources and screenshots as baselines; + stop treating the fixed report layout as the target framework. +2. Write question/view fixtures with required identities and expected distinctions, + independent of the source language and the chosen renderer. +3. Qualify focused layout/render candidates for nested groups, icon-rich nodes, + edge routing, text metrics and static export. Compare complete figures. +4. Select the smallest reusable capabilities that pass those cases; replace the + prototype composition rather than stacking another wrapper over it. +5. Apply independent themes/icons and connect actual model/evidence references; + qualify downstream use and publish only reviewed outputs. + +Open decisions: renderer/backend selection, exact layout constraint surface, +static versus interactive adapters, reliable font measurement, multilingual text, +asset closure and visual regression policy. No new engine has been installed by +this research and no automatic orchestrator or visual-acceptance claim is issued. + +* D2 source identity observation +The inspected official D2 checkout6a7b4837838a3907604a1d9eec57ee98b6f3cd01 +now declares @d2lang/d2 in d2js/js/package.json. The prototype uses the older +@terrastruct/d2 published package. This is a dependency/API comparison obligation, +not authorization to mix an unqualified version upgrade into visual experiments. +Source-language and rendering-backend choices remain independently reviewable. + +* Visual inspection notes +The actual Cocoon web-app image and HTML use a large fixed SVG canvas with a +horizontal chain and a separate card row. Its color discipline is useful, but +its large unused area and fixed placement are not a solution to our current +layout complaint. It is not selected as the target template. +The AWS example demonstrates icon-based resource identity and nested boundaries. +The Diagrams advanced web-service example illustrates icon-rich clusters and +relationships as the main figure rather than a document shell. These are visual +references, not evidence that their default layout handles our Library models. + +* LLM/MLLM-led architecture and explanatory figures +The next research scope is visual design by language and multimodal models, not +only graph libraries. Historical scores, fixed templates and the current engine +choice are references for comparison; they must not become a universal aesthetic +objective. The user's uploaded infographic is a concrete visual reference for +compact information grouping, meaningful icons and low reading burden. Its exact +six-section format is not mandatory for every future question. + +| Primary project and inspected revision | Actual inspected material | Relevant method and limit | +|---------------------------------------+---------------------------+---------------------------| +| [[https://github.com/cathrynlavery/diagram-design/tree/0cf73c3fcc56667ad91a9a04c439ac6ccfabc9d1][Diagram Design]] | Official site before/after examples; repository type/example inventory and architecture screenshot | LLM-authored self-contained HTML plus inline SVG; choose a visual genre and hierarchy from the content rather than restyling one card layout | +| [[https://github.com/nicobailon/visual-explainer/tree/2a34c38c8bf5d0affbf60700f7cf24245bb8ed07][Visual Explainer]] | templates/page.html and kit/render.mjs | A figure and a concise answer lead; semantic references connect prose to diagram parts; rendered pages receive browser/contact-sheet inspection | +| [[https://github.com/google-research/papervizagent/tree/e088a8fff74cc363b6897c0843631fff76484908][PaperVizAgent / PaperBanana]] | Official repository identity; agents/critic_agent.py; author project pipeline | Reference retrieval, content/style planning and visual-feedback refinement; a research method, not an instruction to add its multi-agent runtime | +| [[https://github.com/ResearAI/AutoFigure-Edit/tree/16f3749e9d512bdf7b7b55c162307bc289750b7a][AutoFigure-Edit]] | Official README, staged reconstruction and reference-style gallery | Use a reference image to guide composition and reconstruct editable SVG; its image generation/segmentation stack is not automatically a dependency | + +The independently maintained llmsresearch/paperbanana implementation is not the +official Google project. Research attribution and locally verified capabilities +must remain distinct. No reference system has been run against our case here. + +** HTML as a drawing artifact +HTML/CSS and inline SVG are valid primary visual authoring surfaces. A standalone +figure can contain iconography, spatial grouping, annotations, comparison panels +and a compact legend without a navigation shell or long prose document. CSS grid +and SVG each serve the visual problem that suits them. D2 remains available for +model relationships or an embedded subview; it does not prescribe the entire +composition. OpenSysML and existing C/Q/evidence references retain their semantic +ownership across every output surface. + +Keep the editable HTML/SVG source. Export the intended figure region to PNG or +other requested outputs through a real browser. [[https://playwright.dev/docs/screenshots][Playwright supports page and element screenshots]]; +this establishes an export capability, not our completed exporter acceptance. +Record viewport, device scale, browser identity, theme/assets and source identity; +wait for fonts/images and a deliberately selected animation state. Screenshot the +figure rather than accidentally capturing controls or the full document. Native +browser font rendering is particularly relevant after the observed resvg fallback. +PDF/SVG export should be qualified separately when required. + +** Applying the method to this Library +1. Start with the question, audience, actual model/evidence and the explanation's + intended takeaway. Keep architecture and workflow as distinct visual scopes. +2. Select relevant reference figures and visual metaphors. LLM proposes compact + layouts, component groupings, icon placement and short annotations; no single + score or fixed card hierarchy defines the solution space. +3. Render candidate HTML/SVG at the intended reading size and inspect its actual + image. MLLM critique addresses reading order, ambiguity, whitespace, collisions + and missing meaning, then the candidate is revised with the user's feedback. +4. Check source/model/evidence fidelity through existing framework owners. These + semantic checks remain separate from optional aesthetic diagnostics. +5. Retain editable sources, export images and record the selected candidate and + its associated references. Publication remains an explicit project decision. + +This is the revised design direction. The current fixed-width, fixed-section TS +compositor is a baseline to replace, not the contract that future LLM-designed +figures must fit. Public TS APIs can remain functional; themes, icons, source +acquisition and export effects stay independently composable. Existing Agent +capabilities should drive design iteration before adding another orchestration +runtime. No implementation change or live backend/API invocation accompanies +this research update. + +Visual inspection of Diagram Design's architecture.png still shows substantial +unused canvas. Its method and output surface are relevant, but this individual +sample is not accepted as our density or iconography baseline. Reference projects +are sources of techniques, not automatic aesthetic winners or fixed score targets. + +* Implementation: Deterministic Engineering Render +The package is now @deterministic-engineering/render in packages/render. The +package version remains1.0.0 and is read only from package.json. The old fixed +composePresentation SVG/card compositor is removed; composeFigure accepts a pure +HTML/SVG composition. The host supplies a Playwright browser to exportFigure; +the Library owns and closes its own context and returns PNG plus rendering facts. +It writes no project files and issues no Core/Aitia authority. + +** D2 owns Questions and authored content +D2 already has the [[https://d2lang.com/tour/vars/][vars.d2-config.data plugin metadata mechanism]]. +The existing compiler exports it through graph.data. The installed SDK returns +null for nested map values; a JSON block scalar carries the nested figure +declaration correctly. Official D2 parses source/imports; standard JSON.parse +reads that scalar. No second D2 parser or TS Questions registry is introduced. + +The90.132/90.133 D2 sources contain Questions, focus/source associations, explanatory +copy, language, purpose, theme layers and model relations. TS contains visual +composition and source reading adapters. A changed D2 question changes the image +without editing TS. relation IDs/directions are retained, and the compositor +refuses requests for undeclared relations. The case is a scoped projection with +explicit model/source links, not a complete SysML semantic validation. + +** Language and own visual system +This case uses English because its source architecture, D2 and SysML are English. +No renderer-wide language translation is applied. Upstream maintains Blueprint, +Field Notes and Graphite theme data plus a Compact spacing layer. Declared ordered +layers compose through pure functions; downstream may supply its own layers. +The previously used Lucide default dependency is removed. The Engineering glyph +pack uses project-authored SVG assets for definitions, selection, capture, model, +document, decision, evidence and source references. It remains independently +replaceable. The uploaded infographic guides density and information grouping, +not the copying of its decorative assets or a fixed universal template. + +** Actual case and remaining trust boundary +The Case reads actual organization Library objects, Profile declarations, Scenario +functions, project.sysml and Org design/dossier sources. Explicit source excerpts +and their line positions are observed; this is not a Scheme or SysML interpreter. +Current prepare-formation-capture still returns capture-blocked and capture=#f, +which remains visible in both views. No C, accepted Q, independent R or delivery +is claimed by this image-generation run. + +Architecture and Workflow are separate HTML/PNG artifacts. The main relationship +region uses content-driven height rather than fitting the whole graph to the full +page width. Browser-measured region bounds are recorded as diagnostics, not a +universal density score or automatic aesthetic acceptance. Positive/negative +checks cover actual D2 metadata, missing/changed questions, source footprint, +undeclared/reversed relations, theme/icon replacement, clipping, invalid images, +HTML modification and browser-context cleanup. + +An initial export-control run stalled at document.fonts.ready before layout in a +script-disabled browser context. The corrected path uses the standard context, +explicitly settles layout, then waits for fonts/images. The same clipping and +invalid-image controls now return the intended refusals. Previous logs are kept +locally; a repeated run alone is not the claimed fix. + +* Visual language, diagram organization and palette are independent +A theme is a visual language: stroke treatment, typography, node/port shapes, +connector appearance, boundary treatment and spacing. Palette layers remain +composable but are not a complete theme on their own. =sketchbook= uses actual +Rough.js strokes and embedded Kalam fonts; =node-editor= adds node ports, +precise borders and a node-canvas treatment. It does not embed React Flow. + +Swimlane is an organization of responsibility and order, not a palette. +The D2 figure declaration owns =flow.lanes=, =flow.steps= and =layout=. +Steps bind existing D2 node IDs; their consecutive relations must exist. +A missing lane, node or edge refuses composition. Responsibility labels are +explicit project design declarations, not verified human role mandates. +A business view similarly needs its own business entities/relations and Question; +changing a theme cannot invent these semantics. + +Downstream selects ordered theme layers and a layout in the D2 declaration. +Custom layers and functional composers remain replaceable; the package does +not prescribe numbered sections or a universal card layout. Architecture and +Workflow retain independent purposes. Current source/model language stays English. + +HTML export measures settled browser text and routes declared connectors against +actual node boxes. Sketch surfaces are marked explicitly with =data-surface=; +font assets and deterministic Rough.js SVG are baked into offline HTML. +Receipts distinguish original composed HTML from materialized HTML, record font +hashes and actual browser identity. These are rendering receipts, not C/Q/R evidence. + +browser controls cover deterministic sketch output, changed drawing +parameters, missing connector endpoints, clipping and broken images. The real +case generates architecture and workflow separately, plus sketchbook, +node-editor and workflow-swimlane variants. Actual current source still returns +=capture-blocked / capture = #f=; no accepted inference or published model is claimed. + +References: [[https://roughjs.com/][Rough.js drawing primitives]] and +[[https://reactflow.dev/learn/customization/custom-nodes][React Flow node customization]]. +The user-provided Zhihu reference returned HTTP 403; its article contents were +not inspected. Its hand-drawn example is used as the requested visual direction. + +* Static style implementation and open view organization +The current package boundary is static rendering. Rough.js supplies sketch +primitives and hachure strokes. XYFlow's public =getSmoothStepPath= supplies +connector geometry; the package does not initialize an editor, interactions or +pan/zoom state. The complete Excalidraw package and React are excluded. There is +no editor-scene adapter, runtime bundler or additional build entry. + +** Three independent choices +| Concern | Owner | Current implementation | +|---------+-------+------------------------| +| Meaning and Questions | D2/SysML/project | Canonical =90.132=/=90.133= declarations and captured sources | +| View organization | Project compositor | graph, responsibility swimlane, dependency matrix and open =layout=/=presentation= | +| Visual language | Replaceable theme layers | Independent =styles/sketchbook.ts= and =styles/node-editor.ts=, palettes, spacing, fonts and icons | + +Node and swimlane are examples, not the framework's complete catalogue. Native +D2 classifications retain their existing language/rendering path. New domain +organizations use a functional composer and validate their own presentation data; +there is no mandatory card count or global enumeration of all future diagram kinds. +The new dependency-matrix Case shows the same architecture relationships +in a genuinely different organization, without converting dependencies to workflow. + +** Source and evidence invariants +Questions, explanatory copy, current language and source links remain declared +in D2. The model association remains the captured =project.sysml= and D2 +projection. Changing a theme/layout changes the rendering footprint, not the model +or evidence status. Every rendered connector is checked against its captured +relation and direction. Matrix axes must reference nodes. Workflow lane +assignments are design declarations, not role-authorization evidence. + +Font assets are explicit theme data. Rendering records composed HTML separately +from materialized offline HTML, actual font hashes, drawing/routing package pins, +browser identity and output fingerprints. Rough.js deterministic-seed controls +apply within the qualified browser/font environment; no cross-platform pixel +identity is claimed. The current blocked capture and empty evidence remain visible. + +** Verification and artifacts +The standard package checks cover source/Question capture, D2 syntax and +notation, saved SDK projection, open custom presentation, immutable style +composition and unknown-layer refusal. browser controls cover actual +Rough.js output and font embedding, repeated seeded output, modified inputs, +clipping, broken images, missing endpoints and reversed model relations. +A separate packed-package consumer checks installed worker/font/dependency paths. + +Eight full HTML/PNG candidates plus rendering receipts are generated through +=packages/render/examples/library-case.ts=. =packages/render/examples/comparison.ts= compares only +the main diagram regions, separately for architecture and Workflow, without +stretching a Workflow to fill the whole figure. Document snapshots are explicit +design candidates; rendering does not submit review or publish SysML. + +References: [[https://roughjs.com/][Rough.js official primitives]], +[[https://reactflow.dev/api-reference/utils/get-smooth-step-path][XYFlow public connector utility]], +[[https://docs.excalidraw.com/docs/@excalidraw/excalidraw/installation][Excalidraw editor boundary]]. + +** Local qualification recorded on 2026-11-01 +- Package and real consumer TypeScript checks: passed. +- Bun unit/native D2/saved SDK controls: 29 passed, 0 failed. +- Playwright export controls: 7 passed, 0 failed; worker limit remains two. +- Eight complete candidates and two separate comparison sheets: generated and visually inspected. +- Final packed consumer: =PACKED-CONSUMER-OK=, including owned D2 worker, + actual Rough.js SVG, embedded font resources and selected-region PNG export. +- Qualified tarball SHA256: =ded011a886bb9ad47b69340a89bec268d1365a8b0ac79a7fe8ea9883e4f00bf5=. +- Runtime dependencies: D2 0.1.33, Rough.js 4.6.6, Kalam 5.3.0, + XYFlow system 0.0.83. Neither editor nor React remains in the declarations/locks. +- Actual local export browser: Chromium =156.0.8078.4=. +- CI workflow syntax: actionlint passed. Remote Linux/macOS execution is not + established by these local results; no live SysML validation or C/Q/R is issued. + +* Extensibility audit follow-up +[[file:10.142-declarative-render-extensibility-audit.org][10.142]] supersedes the earlier +closed kind selection, framework-owned linear flow helper and programmatic-only +icon selection. It records the current owners and executable positive/negative controls. diff --git a/docs/10-19-design/10-architecture/10.142-declarative-render-extensibility-audit.org b/docs/10-19-design/10-architecture/10.142-declarative-render-extensibility-audit.org new file mode 100644 index 0000000..5c92792 --- /dev/null +++ b/docs/10-19-design/10-architecture/10.142-declarative-render-extensibility-audit.org @@ -0,0 +1,201 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + +#+TITLE: 10.142 Declarative Static Render Extensibility Audit +#+LANGUAGE: en +#+PROPERTY: JD_ID 10.142 + +* Scope and resulting ownership +This audit follows 10.141 and inspects the actual TS package, D2 declarations, +Library/Profile/Scenario Case, public APIs and CI entrypoints. The package remains +=@deterministic-engineering/render=, version 1.0.0 read from =package.json=. +It is a static rendering library. No whiteboard/editor or React runtime is added. + +| Owner | Publishes / consumes | Does not own | +|-------+----------------------+--------------| +| Project D2/SysML | Questions, copy, model IDs/edges, sources, kind, layout, theme/icon selection and variants | Generic render implementation | +| Project composer | Domain presentation schema, selected content organization, source observations | Another HTML/D2 parser, graph layout engine or evidence ledger | +| Render core | Capture/fingerprint, immutable composition context, resource resolution and purpose boundary | Linear-workflow semantics, finite catalogue of all diagram kinds or mandatory page template | +| Mature libraries | D2 model compilation, ELK.js layout/routing, parse5 HTML parsing, Rough.js strokes/options, XYFlow connector paths, Playwright export | Project truth, evidence issuance or review authority | + +* Findings and disposition +| Finding in previous implementation | Change / exact owner | Verification | +|------------------------------------+----------------------+--------------| +| Seven names acted as the whole diagram taxonomy; purpose checks were repeated | =source/types.ts= has open kind identifiers and one =validatePurposeKind=; reserved standard kinds retain their purpose | Custom kind through actual D2 worker and TS SVG scene export; blank kind/reserved mismatch refuse | +| Framework parsed/validated every workflow as one ordered preparation path with lanes | Moved schema and checks to =packages/render/examples/library-case/workflow-declaration.ts=; D2 places it in project-owned =presentation.flow= | Case lane/node/edge negatives, actual source declarations | +| Compiler forced ELK regardless of project selection | The model worker leaves compile options empty and accepts the official CompileOptions; no raw-SVG theme path remains | Actual D2 DAGRE declaration compiles | +| Variant consumer re-resolved themes through upstream defaults and lost downstream resources | =readD2Figure= resolves each variant once against supplied =FigureResources=; =selectFigureVariant= retains it | Downstream theme remains in variant and HTML; missing/duplicate variants refuse | +| Icons were programmatic overrides; D2 could not select packs, metadata always said engineering | Ordered immutable =composeIconPacks=, D2 =icons= and variant overrides; actual SVG hashes in metadata | Custom real Case glyphs; unknown/prototype-name pack and invalid asset refuse | +| Question markers used a double-quote regex | parse5 parses real HTML; browser independently checks actual visibility | Single/unquoted attributes pass; comments/template/hidden/CSS invisibility refuse | +| Captured model and project presentation could be modified by a composer | Deep-freeze cloned inputs before composition | Mutation negatives; caller input remains unchanged | +| Drawing hardcoded rectangle/hachure/pen parameters | Reuse Rough.js =Options= directly; explicitly declared rectangle/ellipse/diamond surfaces call its primitives | Options/geometry change output; unsupported surface refuses | +| HTML connections assumed horizontal endpoints | Declared =data-source-position=/=data-target-position= select XYFlow positions | Vertical connection passes, invalid side and reversed relation refuse | +| Matrix variant replaced part of Case HTML via substring search | =architecture-diagram.ts= is an ordinary Case-owned pure-function table | Real default/matrix/custom resource compositions and unsupported Case layout refusal | +| Source path checking was duplicated | Figure capture reuses =source/catalog.ts= source boundary | Source law and changed/uncaptured input controls | +| Source excerpts were hardcoded in TS | D2 =presentation.observations= declares assertions; Case effect checks actual files | Missing/changed excerpts stop output; observations do not become execution evidence | +| Unused SVG data-URI wrapper duplicated the existing inline SVG path | Removed; =IconAsset= remains the single payload type | Same real glyph/export tests | + +* Downstream declaration contract +=compileFigureSource(sources, inputPath, resources?)= accepts data-only resources: +=themeLayers= and =iconPacks=. Defaults are immutable. A downstream extends them +with ordinary module exports, then D2 selects ordered names. No global registration, +new manifest, cache or automatic discovery mechanism is required. + +A declared variant may select =kind=, =layout=, =themes= and =icons=. Unspecified +resources inherit the view's resolved selection. =selectFigureVariant= preserves +the captured sources, model, Questions and evidence links; it does not recompile +or rewrite the model. Unknown or duplicate variants fail. Explicit icon packs are +complete selected maps, not implicit word-based icon inference. + +=kind= is open. =purpose= remains architecture or workflow. Reserved standard +kinds keep their original purpose, so allowing a new kind cannot silently turn +an existing architecture view into a Workflow. Project =presentation= stays +unknown at the generic boundary and is specifically validated by its compositor. + +The Case's =project-owned= variants declare =responsibility-map= and +=capture-handoff= kinds, compose =field-notes + workbench + compact= and select +=engineering + repo= glyphs. These names are absent from framework source. +The Case remains explicitly English and still displays =capture-blocked= with +=capture = #f= and no issued C/Q/R. Source assertions remain source observations. + +* Intentional retained defaults and limits +Upstream palettes/styles and the Engineering glyph pack are optional maintained +resources. Their existence does not limit downstream kinds or assets. The Case +has an authored explanatory layout; its headings, role placement and section +organization belong to that Case, not to =composeFigure=. + +D2 supplies labels, relationships and metadata. Its geometry/SVG is discarded. +Actual browser font and glyph measurements feed the existing ELK.js layout engine; +its graph/options control placement and routing. Explicit authored HTML +connectors may use XYFlow, separately from scene layout. No local solver is added. Rough.js adapters expose the selected +primitives; other explicit SVG markup can be supplied by a compositor. Unknown +primitives do not silently render as rectangles. + +OpenSysML's supported reflow adapter retains capability refusals for unsupported +notation. This audit does not claim live SysML service validation. Static HTML +export still bounds width/scale, closes its browser context, records actual fonts, +backend pins and output hashes, and rejects stale inputs and detected clipping. +Visual quality remains a review judgment separate from correctness controls. + +* Acceptance and execution entrypoints +The normal CI entrypoints run package =bun install --frozen-lockfile=, +=typecheck=, =bun test=, =bun run test:export=; then the actual consumer's frozen +install, typecheck, tests, Case export, comparisons and measured TS overview views. +Playwright owns browser fixtures; tests do not start another test runner. Worker +limits remain two and existing job/resource bounds are unchanged. + +Required positives include D2 notation, project-only kinds/themes/icons, +variant retention, real Library/Profile/Scenario sources, source fingerprints, +independent architecture/Workflow artifacts and actual font/image export. +Negatives retain unknown resources, hidden Questions, source/model mutation, +invalid lanes/relations/ports, unsupported primitives, stale input and broken images. + +Ten full candidates and two comparison sheets are derived from 90.132/90.133. +90.134 is the TS scene ownership/dependency view for this audit. CI is authoritative +for Linux/macOS and its exact commit; local results alone do not establish both. +No artifact-upload action is added; generated image candidates are tracked as +requested documentation. No model publication, review or delivery is performed. + +* Measured scenes and removal of Legacy +The previous raw-D2 fallback was a design error: it bypassed the new visual +Library while retaining old geometry. Removed =renderCatalog=, =renderView=, +=pipeline.ts=, duplicate D2 themes/theme registry and the former example renderer. +Current README views are emitted by =overviews.ts= through =composeDiagram= and +=exportFigure=. Their Questions, labels and ELK graph projections stay in +D2. Historical diagrams remain historical, not current renderer acceptance. + +| Boundary | Owner / implementation | Control | +|----------+------------------------+---------| +| Syntax / model | Official D2 SDK; supported OpenSysML projection | No old positions or SVG in compiled model | +| Figure organization | Downstream pure composer | No mandatory card/page layout | +| Font / glyph dimensions | Actual browser with embedded Inter or Kalam | SVG glyph viewport explicitly set before measurement | +| Spatial layout / routing | ELK.js graph/options | Measured node/edge-label sizes; no second constraint DSL or solver | +| Hand-drawn geometry | Rough.js primitives/options | Actual measured scene frames; different font metrics enter layout | +| Output checking | Browser-observed containment and pairwise overlap checks | Nodes/content/edge labels; invalid post-layout CSS refuses | +| Export | Explicit SVG scene/annotations and browser PNG | No raster wrapper, foreignObject or raw-D2 fallback | + +The initial ELK bundled fake worker left timers alive after image generation; +those successful image writes did not establish natural completion. The official +Node worker mode, with its declared =web-worker= dependency and =terminateWorker= +in =finally=, fixes lifecycle ownership. The overview entry now exits naturally. +Nested SVG CSS width alone also left an oversized intrinsic glyph viewport; +explicit viewport attributes fix that root cause before font-box measurement. +D2 SDK compilation returns formatted source text in its output filesystem; that +text must not overwrite captured repository bytes. The model worker now retains +the actual input filesystem, and the overview driver verifies source hashes again +before writing. Formatted compiler output is not relabeled as original evidence. + +The adapter supports orthogonal/polyline serialization and root-owned model edges. +Ports, nested edge containers and splines require a dedicated compositor and refuse +at this boundary. This is an adapter capability limit, not a limit on downstream +kinds, themes or independent composers. Geometric checks detect stated violations; +they do not prove optimal space usage or aesthetic quality. Functional composition +makes inputs explicit and repeatable; it does not itself solve spatial constraints. + +Primary references: [[https://github.com/kieler/elkjs][ELK.js]] and +[[https://eclipse.dev/elk/reference/algorithms/org-eclipse-elk-layered.html][ELK Layered]], +[[https://roughjs.com/][Rough.js]]. Reuse these implementations rather than introducing +another layout engine or editing/interaction runtime. + +* Qualification and review handoff +Local package typecheck, 25 unit/model/SDK tests and 19 Playwright browser +controls passed. Consumer typecheck and two domain tests passed, ten full Case +figures and two comparison sheets regenerated, and five current overview scenes +exported and exited naturally. These controls include unknown resources/relations, +changed sources, hidden Questions, invalid assets, layout failure cleanup, +post-layout overlap/overflow and standalone vector image decoding. + +Only original PR #2 is retained. The duplicate PR and duplicate branch were closed +and removed. Linux/macOS checks apply only to their tested commit; pre-scene green +commit =fce59ac= is historical evidence, not acceptance of the new scene pipeline. +The final scene commit must pass both jobs before handoff. No model publication, +independent review, merge or delivery authority is implied. + +* Visual language is a declarative extension boundary +The first measured scenes still repeated identical rectangular nodes and nearly +identical glyphs. That met geometry checks but failed visual communication. +Themes now compose SVG surface assets, typography, semantic CSS, connector +marks and spacing, alongside palette and font resources. ELK layout preferences +compose in the theme too; explicit view options take precedence. No parallel +constraint schema or solver is introduced. Project role names are +open; surfaces use the existing SVG asset contract, not a new shape language. +Node composers receive the immutable selected theme. No editor runtime is added. + +Editorial intentionally leaves supporting nodes unboxed, emphasizes the published +Library and distinguishes external / pending boundaries. Technical node-editor +uses explicit node and connector marks. Sketchbook uses actual Rough.js frames +and Kalam metrics. These names remain optional maintained defaults; downstream +can introduce another visual language without editing a framework switch. +90.135 selects them as independent variants over the same captured model. +Icons are explicitly chosen by responsibility in D2, replacing the earlier +repetition of the generic model glyph. Architecture and Workflow remain separate. + +Annotation heights also follow measured selected-font ascent/descent: the first +sketch variant correctly failed for a clipped fixed-height heading, and that +fixed-height assumption was removed. Output checks are correctness controls; +visual beauty remains subject to the user's review of actual rendered candidates. + +* README architecture explanation +The README lead embeds the complete TS-rendered numbered architecture overview, +including purpose (1), ownership (2), independent responsibilities (3), project +artifacts (4), source observations and open gaps. The section-2 crop is only a +linked component detail; it is not the overview. Questions/D2/SysML and another +complete visual variant are linked beside the full image. + +The subsequent sections describe Library/Profile/Scenario, repository dependencies +and the static renderer as components. Workflow stays separate. Source facts and +the capture-blocked state remain visible in the full overview; style-comparison +sheets are supplementary rather than the README's primary illustration. + +* SVG serialization order control +Linux run 41284866523 failed the repeated SVG byte check while the PNG and ELK +layout hashes matched. Preserve that failure separately from earlier green runs. +A controlled browser CSSOM enumeration reversal reproduces the same class +of failure: identical pixels/layout but different SVG bytes. Computed custom CSS +properties were emitted in the browser's enumeration order. Sort those unique +property names before standard XMLSerializer output; keep the original strict +repeatability assertions and the new environment control. This fixes an observed +serialization defect without replacing the serializer, relaxing checks or changing +layout. The original failed CI did not retain SVG payloads, so its precise byte +difference cannot be claimed as recovered; the controlled witness is explicit. diff --git a/docs/10-19-design/10-architecture/10.143-sdk-model-adaptation-audit.org b/docs/10-19-design/10-architecture/10.143-sdk-model-adaptation-audit.org new file mode 100644 index 0000000..83c39da --- /dev/null +++ b/docs/10-19-design/10-architecture/10.143-sdk-model-adaptation-audit.org @@ -0,0 +1,143 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + +#+TITLE: 10.143 SDK Model Adaptation Audit and Closure +#+LANGUAGE: en +#+PROPERTY: JD_ID 10.143 + +* Provenance and scope +Base commit: =7868849=. The four originally reported dirty files came from the +active Gateway conversation =01a14f36-74bd-7151-8830-70b7e82ab7a8=. Its recorded +commands ran =weaver-upstream-model-support.ts= and +=weaver-upstream-sysml-bridge.ts= against this renderer worktree. The work expanded +to six modified files and the new =model-view.ts=. The user authorized notifying +that conversation to stop upstream writes and assigned closure to this conversation. +No independent authorship is inferred from file timestamps or Git's dirty status. + +The inherited patch, seven file snapshots and SHA256 manifest are preserved locally +under =.cache/render/model-adaptation-audit/=. Temporary Gateway scripts are origin +records, not build entrypoints or published framework dependencies. Actual authority +for model syntax/semantics remains the pinned SDKs declared in package.json. + +* Disposition and ownership +| File / inherited behavior | Disposition | Owner / boundary | +|---------------------------+-------------+------------------| +| =d2-figure.ts=: longest dotted prefix as parent/endpoint owner | Remove | D2 supplies exact IDs/endpoints. Generic automatic hierarchy needs explicit parent data; nested D2 views declare their ELK grouping | +| Generated lifeline name, ID suffix and stroke pattern filter | Remove | Preserve SDK observations. A complete automatic projection refuses missing exported endpoints; dedicated sequence notation is not reimplemented | +| Class/SQL members flattened into invented strings | Retain typed SDK member data instead | Render text uses the SDK's method name, visibility, constraints and references. Null member arrays are handled; D2 text geometry is discarded | +| =figure.ts=: boolean arrow flags / reconstructed source names | Replace with Arrowhead values and raw SDK names | Names are captions, not identities. Core model carries typed observations only | +| =diagram.ts= / =scene-export.ts=: arrows / compound endpoints | Retain with explicit capability boundary | Preserve none, arrow, triangle and unfilled-triangle at both ends; unsupported markers refuse instead of becoming generic arrows | +| =opensysml.ts=: recursive PascalCase JSON renaming | Remove | The official SDK decodes its own protojson. Go transport must export its actual protojson contract | +| SysML-to-D2 emission followed by another D2 compilation | Remove | Direct SDK RenderedView-to-FigureModel display projection; no second SysML parser, name resolver or model compiler | +| =index.ts=: view-name-only selection and fabricated capture paths | Replace | Bind declared model hash + requested view + an existing source reference and matching captured JSON; retain actual input sources | +| =model-view.ts=: reusable hierarchy/composer helper | Retain as optional pure functions | Use explicit parent IDs, exact node-ID presentation mappings and ELK options. Do not reinterpret D2 classes as semantic roles | + +* Public declaration and source closure +=FigureResources.sysmlViews= supplies host-captured SDK results. D2's existing +figure metadata may select one using: + +#+begin_src json +{"modelSource":{"ref":"sdk","modelHash":"", + "view":"","portProjection":"owner", + "labels":{"":"Display caption"}}, + "references":{"sdk":"models/current-render-view.json"}} +#+end_src + +The reference points to already captured bytes in =sources=. Those bytes encode +={modelHash, requestedView, rendering}= from the SDK capture. The adapter compares +the parsed object with the selected SDK snapshot using Node's structural equality, +retains the original bytes, and rejects mismatches. It does not create files or +invent source paths. SDK revision/request binding and the source fingerprint enter +=composeFigure='s input footprint and exported metadata through =modelSource=, +=modelTrace= and existing =sourceSHA256=. + +Source acquisition, actual SDK calls, capability checks and explicit persistence +belong to the host/project. The renderer does not turn caller-supplied captures +into trusted execution receipts. Saved SDK fixtures prove adapter behavior, not a +live service, valid SysML model, issued C, accepted Q or independent review R. + +* SysML projection contract +The SDK owns parsing, checking, ownership resolution, transport decoding and +renderView. Edge IDs created by the display projection are local ordinal keys +bound to this capture and trace, not new persistent semantic edge identities. The projection consumes exact node IDs, explicit parents, ordered +edge endpoints, port IDs and source spans. Display-caption overrides use exact +IDs, including when multiple nodes have the same name. It does not synthesize +qualified names from labels. + +Default projection refuses ports. Explicit =portProjection: owner= retains +=fromPort=/=toPort= and the projection mode while showing owner-level connectors. +Each port must belong to the specified endpoint. Duplicate/absent port IDs, broken +parents, cycles and missing nodes refuse. This is not exact port geometry or a +proof of connection compatibility. SDK edge kind and ordered endpoints remain in +the observation; the current RenderedView contract has no arrowhead field, so this +projection does not invent arrowheads from kind strings. + +Tables/notes, stand-ins, compartments and collapsed SDK nodes still require a +supported notation adapter. The former D2 roundtrip projection's =text=/=source= +result is replaced by =model= and its trace in this unpublished PR. No compatibility +fallback or alternate decoder is retained. The optional SDK peer is needed for +its integration and types; ordinary runtime D2/render imports do not initialize it. + +* D2 and generic scene contract +D2 compiles syntax/imports and exports IDs, labels, level, classes, typed members +and Arrowhead values. The renderer neither unescapes labels again nor parses IDs +or method signatures. Class names and method parentheses are preserved exactly. +D2 classes remain ordered source annotations, not implicit framework role choices. + +=graphFromModel= builds an ELK graph from explicit parent IDs. Nested D2 observations +without explicit parents require the project's declared graph; automatic grouping +will not guess from dots in IDs. Missing endpoints and unreachable ownership refuse. +=composeModelView= is optional and replaceable. ELK still owns spatial layout; +SVG primitives only materialize its result. This does not reproduce full SQL row +ports, UML or sequence notation. The supported generic node/member display is +explicitly distinct from those notations. + +* Positive and negative acceptance +| Boundary | Positive control | Negative control | +|----------+------------------+------------------| +| Actual D2 SDK | Quoted IDs, nullable SQL constraints, method-only class, exact method name | Automatic nested grouping refuses; lifelines are not silently filtered | +| Direct SysML projection | SDK-decoded IDs/parents/origins; unchanged source object | Duplicate nodes, cycles, missing owners/endpoints, ambiguous name captions | +| Port projection | Explicit owner mode preserves real port references | Implicit collapse, wrong endpoint ownership, duplicate ports | +| Source binding | One model hash/view and actual captured JSON; no generated source files | Wrong revision/view, absent resource/reference, changed JSON | +| Display fidelity | None/triangle/bidirectional SVG marks, compound node endpoints, members | Unsupported diamond marker refuses; root identity collision, invented mapping or non-text ELK option refuses | +| Trust / lifecycle | SDK errors propagate; capture snapshot survives caller mutation | Decoder rejects invalid transport fields; no parser or review-authority fallback | + +Local validation uses the package's typecheck, Bun tests and Playwright +entry (two workers). Downstream typecheck/domain tests, ten full explanatory Case +exports, comparisons and current view exports remain required. Linux/macOS CI +must pass on the resulting PR commit; previous green commits do not qualify it. + +* Paired architecture and complete overview +[[file:../../90-99-views/90-architecture-views/90.136-model-adaptation-boundaries.svg]] + +The complete numbered README overview remains the primary illustration. Its D2 +observations now capture the adapter/binding source files, and its source-status +caption explains SDK identity/port preservation and explicit projection limits. +It is regenerated through the same TS Library, not replaced by a section crop. + +[[file:../../90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-sketchbook.png]] + +The component view is =90.136=; Workflow remains a separate purpose. No independent +review, model publication or delivery is performed by this refactor. + +Primary references: [[https://d2lang.com/tour/sql-tables/][D2 SQL tables]], +[[https://d2lang.com/tour/classes/][D2 classes]], and the pinned installed +=@terrastruct/d2/index.d.ts= / =@openmbee/opensysml/dist/core/render-view.d.ts=. + +* Local qualification +Package typecheck, 31 Bun unit/SDK tests and 23 Playwright browser controls passed +with two workers. The real consumer typecheck and two domain tests, full Case +exports/comparisons and six component/overview views are the standard downstream +entries. Final-head Linux/macOS checks must be read from PR #2; no new PR is used. + +The independently packed consumer passed a core-only D2 export without the optional +SDK installed. With the declared SDK peer installed, the same archive passed direct +source-bound SDK projection/export and rejected a stale model hash. These are +local package-consumption checks, separate from remote Linux/macOS CI. + +Re-entry through =composeFigure= rejects a model hash, view or port-projection +selection that differs from its captured SDK trace. A new selection requires a +fresh source-bound projection; changing its fingerprint alone cannot admit a +contradictory selection. This is a rendering-context consistency check, not SDK +semantic validation or an independent provenance credential. diff --git a/docs/10-19-design/10-architecture/10.144-functional-themes-layouts-and-package-examples.org b/docs/10-19-design/10-architecture/10.144-functional-themes-layouts-and-package-examples.org new file mode 100644 index 0000000..aef4bdf --- /dev/null +++ b/docs/10-19-design/10-architecture/10.144-functional-themes-layouts-and-package-examples.org @@ -0,0 +1,188 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + +#+TITLE: 10.144 Functional themes, measured composition and package-owned examples +#+LANGUAGE: en +#+PROPERTY: JD_ID 10.144 + +* Scope and actual corrections +This implements the functional render Library improvements on the existing PR #2, +from source baseline =1da8a8f=. Model truth, source acquisition, execution evidence, +review and publication ownership remain outside visual styles. Package version is +still read only from =packages/render/package.json=; no namespace version is added. + +The audit found closed palette/spacing tokens, fixed typography/icon dimensions, +a prematurely assigned DOWN direction in =graphFromModel=, shallowly shared nested +surface/Rough options, and a blueprint layer that reset unrelated styling. These +are replaced by open semantic tokens, measured typography/spacing, explicit option +precedence, owned deeply frozen values and independent palette layers. + +A new text-line overlap control caught Kalam's taller real font bounds. Its visual +style now declares its own leading instead of relying on Inter's metrics. A first +layout test incorrectly compared the left edges of unequal-width nodes; the final +control compares their centers and displacement along the chosen axis. Neither +failure is described as an upstream ELK defect or a retry-based repair. + +* Public responsibilities +| Owner / files in packages/render | Publishes / consumes | Boundary | +|---------------------------------+----------------------+----------| +| =src/palettes.ts= | Complete color data: blueprint, graphite, field-notes, ocean, ember | Open semantic string tokens; browser CSS validates colors; a palette is one aspect of a theme | +| =src/presentation-theme.ts=, =src/styles/= | Ordered immutable layers for style, fonts, typography, spacing, markers, surfaces, Rough and ELK preferences | Downstream extends ordinary data; no mutable global registry or diagram kind-to-layout table | +| =src/layouts.ts= | Optional layered-down / layered-right data for the existing theme mechanism | Open ELK options remain available; these are preferences, not a new constraint schema or semantic taxonomy | +| =src/heading.ts= | =composeHeading(context, spec)= returns markup/CSS | Open roles, optional ordinal and independent domain glyph; no page template or invented Question | +| =src/figure.ts= | Immutable selected Questions and source/style footprint | All selected Questions remain visible; extra rendered Question IDs refuse | +| =src/diagram.ts=, =src/scene-export.ts= | Actual font/glyph/content bounds to ELK, then returned geometry | No local constraint solver, obstacle router, wrapping parser or retries | +| =src/export.ts= | Browser color/geometry checks, observed SVG text scale, explicit canvas and output receipt | Host owns persistence; observations are not validity, evidence strength or aesthetic approval | +| =examples/= inside this package | Real source-driven architecture and Workflow compositions, declarations, tests and image drivers | Root =examples/render= is removed as a maintained source location; no parallel copy | + +Model adapters preserve the current D2 and OpenSysML responsibilities from 10.143. +Automatic graph construction uses explicit parents. Source-declared grouping and +layout options stay in D2/SysML/project adapters. The selected theme cannot +change a model relationship, turn architecture into Workflow or issue C/Q/R. + +* Functional composition contract +=composePresentationTheme(names, layers?)= folds ordered overrides over one default. +The returned tree is an owned, deeply frozen copy, including SVG asset records and +Rough dash arrays. Caller inputs remain editable. Later palette selection changes +only colors (including field-notes, which formerly also replaced the font); applying blueprint after sketchbook preserves Rough, Kalam and leading. +Font assets remain explicit. Density changes padding/gaps, not font size. + +Color and spacing tokens can add downstream semantic names. Typography tokens are +CSS strings and become =--type-=; colors/spacing use their existing CSS names. +Token identifiers, nonempty values, finite nonnegative spacing and ambiguous CSS +names are checked. The browser validates color syntax, including modern CSS color +functions. This is not a second color parser or a contrast/beauty scoring system. + +Precedence is: actual layout-effect defaults, then theme ELK preferences, then +explicit view/graph options. Automatic graph projection no longer inserts +a direction before that selection. Scene padding, glyph size/gap, label padding, +viewport padding and text style feed actual browser measurement before layout. +ELK owns placement/routing; unsupported adapter capabilities still refuse. + +#+begin_src typescript +const theme = composePresentationTheme( + ['sketchbook', 'ocean', 'compact', 'layered-right', 'project'], + {...presentationThemeLayers, project: { + colors: {domainBoundary: 'oklch(60% 0.15 240)'}, + typography: {titleSize: '21px'}, + spacing: {iconGap: 16}, + headingMarkers: {question: '?'}, + layoutOptions: {'elk.spacing.nodeNode': '36'}, + }}, +); +#+end_src + +The model declaration still chooses Questions, ordered themes, variants and icon +packs. Pure composers consume the resolved resources; core TS contains no Library / +Profile / Scenario identity, language translation or numbered overview template. + +* Human-readable roles and whole-heading measurement +=composeHeading(context, {role, text, questionRef?, ordinal?, glyph?})= is an optional +part, independent of =composeModelView= and any full-page compositor. A supplied +Question reference must resolve to the selected source wording. Open roles can use +theme CSS. The default question role uses the theme's =?= marker; an ordinal +can replace it. Answer/content domain glyphs are selected separately and are not +inferred from a Question's subject or copied into its role marker. Downstream can +override =headingMarkers= by role without repeating the same marker per chapter. + +At export, every ordinal/glyph/text part is measured with the actual font. Ordinal +text is centered in its measured marker, parts share a vertical center and selected +gap, and the complete group is placed in the annotation viewport. A long annotation +that does not fit refuses; no automatic font shrinking or silent truncation is added. +Legacy single-text annotations remain measured as such, without a duplicate API. + +* Canvas and observed readability +Root figures have an explicit theme background. Whole-figure and standalone scene +SVGs include the measured root backdrop by default, avoiding transparent dark-text +assets on a dark GitHub page. =exportFigure(..., {transparent: true})= explicitly +requests a transparent outer PNG/SVG canvas; authored interior fills remain intact. +SVG serialization uses sorted computed custom-property names as before. + +=receipt.readability= reports visible SVG text samples and their minimum effective +font size in logical CSS pixels after scene scaling. An optional +=minimumTextSize= rejects below the host's declared threshold. It does not inspect +all HTML text, prove screen readability at an arbitrary embed size, or claim beauty. +Increasing export DPR does not increase the logical text-size observation. + +* Maintained source-driven examples and artifacts +Examples now live in =packages/render/examples= and consume the package's public +self exports, dependencies and typecheck. The old example manifest/lock/tsconfig +are removed. Keeping a nested =file:..= manifest initially caused an ENOENT copying +failure; inspection showed parent =examples= and =node_modules= copied into the +self-dependency. That failed installation tree is retained locally under +=/private/tmp/de-render-example-install-failure=. The corrected ownership removes +the self-dependency rather than cleaning/retrying it. Bun entry commands +and separate package/example test directory selection remain explicit in CI. +Repository source roots, source fingerprints and documentation move together. +Examples are excluded from the published =files= list. A separate tarball consumer +qualifies actual downstream installation without nesting it inside the package. + +The README keeps the complete numbered Library/Profile/Scenario overview first. +Detailed component views stay separate. Architecture 90.135 declares editorial / +ocean, sketchbook / ember and node-editor / ocean variants, with an additional +comfortable-density variant. Workflow 90.130 independently declares node-editor / +ocean and sketchbook / ember. The same Questions and model relationships +survive each variant. 90.137 documents the actual component dependencies. + +[[file:../../90-99-views/90-architecture-views/90.137-functional-render-composition.svg]] + +* Positive and negative acceptance +- Unit: layer order, new downstream tokens, collision/invalid numeric refusal, + unchanged caller-owned nested assets and deep immutability. +- Browser: theme direction reaches automatic ELK graphs; explicit source options + override it; larger type/padding/glyphs alter actual measured node dimensions. +- Question/Answer: selected wording, independent role marker and domain glyph, + multiple selected Questions, whole-part bounds/centers across visual styles; + invented wording and a shifted whole-heading group refuse. +- Readability: visible SVG metrics are reported; an explicit excessive threshold, + invalid threshold and deliberately overlapping text lines refuse. +- Canvas: decode full and individual SVGs as actual images and sample alpha pixels; + default backdrop is opaque and explicit transparent mode is transparent. +- export: original strict SVG/PNG repeatability, CSSOM order control, failed + layout cleanup, model binding and unsupported notation controls remain active. +- Consumer: unified package/example typecheck and separate example tests and all declared exports; a packed + independent consumer checks new subpath exports and public heading composition. +- Remote: Linux and macOS must qualify the final source commit with two Playwright + workers and the existing CI limits. Local receipts do not stand in for remote CI. + +No Gerbil/SDK/compiler changes, interactive editor, custom layout solver, automatic +orchestration, review submission, C issuance or model delivery belongs to this work. + +* Local qualification record +The package unit lane passed 35 tests (including the seeded ordinal PBT), +the browser lane passed 29 controls with two workers, and the package-owned case +lane passed 2 tests. All ten full case variants, two comparison sheets and twelve +measured component views were regenerated; captured source and PNG/SVG hashes were +checked before refreshing documentation. These are local receipts, not remote CI. +An independent packed consumer installed the package outside the repository and +exported a source-declared hand-drawn model with a RIGHT layout, semantic +headings and an opaque canvas; its observed minimum SVG type was 12 CSS pixels. +The package archive excludes examples and tests. Remote final-head qualification +is recorded in the existing [[https://github.com/hardenedlinux/deterministic-engineering/pull/2/checks][PR #2 checks]]. + +* Downstream surface counterexample and correction +A downstream reported PNG pixel [231,241,245,255] versus SVG [240,245,247,255] +at the same panel coordinate: only SVG scenes/headings were collected, so an HTML +panel's tint was absent from the independent vector image. The report is retained +locally at =/private/tmp/weaver-library-surface-counterexample.json=; it is not a +new model or evidence authority. The package reproduces this class of defect with +its own declared panel and nested Question/Answer headings. + +The existing =data-surface= boundary now materializes declared rectangle/ellipse/ +diamond surfaces for precise SVG or Rough paths, using measured host dimensions. +Precise mode uses browser-computed solid background, uniform solid/dashed/dotted border and +uniform pixel corner radius; unsupported CSS forms request an explicit SVG asset +rather than being approximated. These surfaces are included in vector extraction +in document order, before their contained headings/nested surfaces. Scene-internal +Rough paths are already part of their scene and are not separately collected. + +The browser control decodes PNG and SVG, compares corresponding outer/nested fill +pixels and checks surface / Question / nested surface / Answer order across precise +and sketchbook styles. A declared gradient background refuses. This does not claim +arbitrary HTML/CSS-to-SVG conversion or preserve effects outside this explicit +surface boundary. Architecture and Workflow compositions remain independent. + +Dashed/dotted surface borders use SVG dash arrays and browser stroke rendering; +exact CSS-border raster parity and HTML shadows/pseudo-elements are outside this +primitive surface projection. Custom SVG assets can supply a different visual mark. diff --git a/docs/10-19-design/10-architecture/10.145-design-taste-public-contracts.org b/docs/10-19-design/10-architecture/10.145-design-taste-public-contracts.org new file mode 100644 index 0000000..03eea2a --- /dev/null +++ b/docs/10-19-design/10-architecture/10.145-design-taste-public-contracts.org @@ -0,0 +1,215 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + +#+TITLE: 10.145 Design and Taste public contracts +#+LANGUAGE: en +#+PROPERTY: JD_ID 10.145 + +* Intent and ownership +The render Library publishes Design as a reader brief and Taste as composable pure +inspection rules. Existing FigureComposer, DiagramSpec, theme/icon resources, +browser measurement and ELK remain the composition and rendering interfaces. +The package version still comes only from =packages/render/package.json=. +No skill installation, separate framework, diagram taxonomy or evaluation service +is required to use these APIs. + +| Owner / file | Responsibility | Boundary | +|--------------+----------------+----------| +| =src/design.ts= | DesignSchema, inferred Design type, defineDesign and binding | Valibot decodes structure; selected model/Question IDs establish reference closure | +| =src/d2-figure.ts= | Read Design and existing source-declared variants | Syntax/imports belong to D2 SDK; SysML selection still uses its existing adapter | +| =src/figure.ts= | Snapshot Design into context, metadata and input footprint | Check references after SDK projection; require selected subjects/relations in composition | +| =src/diagram.ts= | Consume DiagramSpec and explicit hierarchy | Preserve IDs/endpoints; record display owner and cross-boundary classification without name heuristics | +| =src/export.ts= | Observe actual geometry, visibility, text and Scope containment | ELK owns placement/routing; browser observations and source capture share output hashes | +| =src/taste.ts= | composeTaste, reviewTaste, criteria and structured findings | Pure inspection; no source acquisition, browser, graph rewrite, numeric beauty score or automatic winner | +| =examples/design-case.ts= | Case-specific ELK graph/matrix compositions and answer-space criterion | A downstream-owned example, not a core type registry or page template | +| =examples/design-choices.ts= | Source acquisition, export, explicit writes and comparison | Uses package entrypoints and the host-owned browser | + +* Design declaration +=DesignSchema= is a strict schema; =Design= is inferred from it. =defineDesign= +decodes unknown data and returns an owned deeply frozen copy. Caller arrays and +objects remain editable. Empty text, duplicate references, unknown fields and +wrong primitive types refuse. + +| Field | Meaning | +|-------+---------| +| =audience= | Reader and decision context, an open string | +| =medium= | Intended placement, e.g. README component view; existing width/language/purpose remain in FigureInput | +| =message= | Authored takeaway, not a derived or proven model assertion | +| =questionRefs= | Existing selected Questions that motivate the design | +| =requiredSubjects= | Exact model IDs that the selected view must retain | +| =requiredRelations= | Exact selected relation IDs; no endpoint-name ID reconstruction | +| =focalSubjects= | Exact model IDs chosen for emphasis; they must also be rendered | + +Design is optional for existing consumers. When present it is part of the immutable +FigureContext, rendering input hash and existing provenance. References bind only +after the selected OpenSysML projection, so the D2 declaration's placeholder model +cannot accidentally become the binding model. Required subjects and relations must +have composition markers and visible output regions. This proves neither authored +wording nor model semantics: a visible marker is an explicit display association. + +The existing =selectFigureVariant= also accepts a complete variant Design and an +optional replacement =presentation=. These replace whole values rather than merging +opaque project data. Variants retain captured sources, model and Questions. There +is no additional plan/candidate registry. The existing project-owned =layout= key +selects the Case's source-declared graph or matrix composition. + +* Taste declarations and composition +A =TasteRule= contains =id=, =rationale=, optional scalar =parameters= and a pure +=inspect(context)= function. =Taste= is a readonly sequence of these rules. +=composeTaste(...rules)= copies/freezes declarations and parameter data, rejects +duplicate IDs and invalid parameters, and preserves their declared order. Downstream +functions extend this interface without editing a global rule registry. + +=reviewTaste(figure, image, taste)= verifies the composed/input/output hashes and +compares original capture metadata with materialized metadata. Observations, +readability and region bounds must match the values baked into exported HTML. +It clones/freezes the inspection context, including the same model, selected +Questions and view, before invoking rules. Returned notes +are schema-checked and may reference only captured Questions/model subjects. + +The result contains Design, input/HTML/PNG fingerprints, captured source hashes, +rule IDs, reasons, parameters and notes. Rule source acquisition stays with the +host: this Case captures its composition/criterion files and framework source in +the existing =sources=. Rule labels and local hashes are not code attestation, +trusted execution evidence or a substitute for checking the actual program. +Custom rules are expected to be pure; the Library cannot prove a callback has no +external state or network access. It supplies no execution runtime for them. + +| Note kind | Interpretation | +|-----------+----------------| +| =observation= | A stated quantity/reference was observed under this rule; no aesthetic acceptance follows | +| =advice= | A selected preference suggests revising this candidate | +| =unobserved= | The necessary measurement is absent; an empty measurement is not a pass | + +The built-in =minimumTextSize(n)= consumes existing measured SVG text sizes in CSS +pixels. =focalBudget(n)= counts declared focal subjects, not perceived salience. +The Case's =answerSpace= uses the existing answer-region/figure dimensions with a +source-selected limit. Its ratio is not a universal quality metric. An empty rule +list/report, or a list containing only observations, confers no beauty/pass score. +Hard model reference, visibility, clipping and containment failures remain rendering +errors. Taste advice does not silently drop content, shrink fonts or rerun layouts. + +#+begin_src typescript +const design = defineDesign(sourceDeclaration.design); +const figure = composeFigure({...input, design}, projectComposer); +const image = await exportFigure(figure, browser); +const taste = composeTaste(minimumTextSize(12), focalBudget(1), projectRule); +const report = reviewTaste(figure, image, taste); +#+end_src + +The decoder and compositor are synchronous pure functions; export remains an +explicit effect using the existing Promise/browser ownership contract. LLM-produced +proposals can enter the same source declarations and interfaces. Their wording, +preferences and recommendations remain authored candidates until reviewed. + +* Actual Library / Profile / Scenario Case +Canonical declaration: [[file:../../90-99-views/90-architecture-views/90.138-library-design-taste-choices.d2][90.138]]. +It retains the five subjects and four relations in the current 90.132 Case: +Library, Project, Profile, Scenario and repository inputs; selects, binds, +references definitions and binds actual inputs. The D2 SDK supplies their IDs. +The source captures project.sysml, Library objects, Profile selection and Scenario +code; source associations do not issue C, accepted Q, review R or validate SysML. +All three choices preserve the same required-reference sets and model observations. +Their Questions/content are English, following the current source models. + +| Choice / reader | Design decision | Benefit | Tradeoff | +|-----------------+-----------------+---------+----------| +| Publication first / Library adopter | Library above the Project boundary, dependency arrows upward, one Library focal subject | Establish reusable ownership before project choices | Cross-boundary references consume more space than a table | +| Project boundary first / maintainer | Downward ELK arrangement with Scenario focal, explicit Project containment | Read actual input binding and retained Library dependencies | Greater vertical height in README | +| Relationships first / reviewer | Source-declared directed relation matrix, the same five subjects/four edges | Inspect every dependency without following routed lines | Containment is textual; use the boundary view for spatial ownership | + +The matrix uses ordinary CSS grid, vector heading parts and the existing declared +surface adapter. Graph choices use DiagramSpec and ELK. Neither introduces another +layout solver. Explanations, tradeoffs, audience, focus and criteria preferences +are declared in D2; TS supplies the reusable functional composition. + +[[file:../../90-99-views/90-architecture-views/90.138-library-design-taste-choices-comparison.png]] + +* Scope feedback and correction +Human feedback on the first horizontal candidate identified a weak Project outline +and routed lines that appeared to live outside it. Automated counts/font checks +had not established visual clarity. The revised source selects UP for the Library- +first view and DOWN for the project-first view, gives Project a clear outline and +uses a stated solid/internal versus dashed/cross-boundary legend. These marks +classify the displayed hierarchy, not async/optional execution semantics. + +The compositor records owners from explicit ELK children and classifies edges from +those owner IDs. It never infers ownership from dotted IDs. Export checks each +child frame against its owner frame and each internal relation, including labels, +against common ancestor scopes. Cross-boundary relations may leave a scope. ELK +still supplies all coordinates and routes; no corrective router is introduced. +Moving a child or internal edge outside its scope is a negative browser control; +a legitimate crossing edge is a positive control. + +A preview also exposed overly broad CSS that recolored Rough's invisible fill +paths. The Case now styles only the visible outline paths. This example records +why human criticism and structured measurements have different roles: a geometry +check cannot certify the clarity of a Scope or the appeal of its drawing style. + +* Functional-library choice and bounded measurements +Effect is a substantial functional ecosystem. This slice needs structural decoding +and type inference, so it uses Valibot 1.2.0 and ordinary TypeScript pure functions. +No local monad, schema parser, process framework or alternate browser lifecycle is +added. The existing package version remains 1.0.0. + +A temporary Bun 1.3.11 browser-target probe decodes the same seven Design fields +through Effect 4.1.1 Schema and Valibot 1.2.0, with extra properties refused: + +| Probe | Minified bytes | gzip bytes | +|-------+----------------+------------| +| Effect Schema | 76,766 | 25,714 | +| Valibot | 4,188 | 1,587 | + +These are probe entrypoint sizes, not the production application bundle, loading +latency, heap or proof of general library performance. The install unpacked size +is a different quantity. Probe sources/output are retained locally under +=/private/tmp/de-design-schema-probe/=. Fonts and browser workers are unchanged. + +* Controls and acceptance +- Strict structural schema, wrong/unknown/duplicate references, source-driven + variants and post-projection model binding. +- Deep immutable inputs/results, unchanged caller data, seeded subject-set PBT, + custom rules, preserved rule ordering and duplicate-rule refusal. +- Missing/hidden subjects and relations, including hidden paths whose geometric + length is still nonzero; visible unlabelled horizontal edges remain valid. +- Original figure/output hashes and baked observations; stale/tampered PNG, + observation or reference results refuse. No SVG text gives unobserved, not pass. +- Child/internal-edge containment, legal cross-boundary paths and owner IDs. +- Same five model subjects/four relations in all real choices; candidate IDs and + reasons vary through the source without rewriting framework code. +- Package typecheck, Bun unit and example lanes, Playwright with two workers, + existing export/SDK regressions, all declared generators and an independent + packed consumer; final-head Linux/macOS CI in original PR #2. + +Existing budgets remain unchanged. No Gerbil/SDK changes, skill execution, review +submission, automatic orchestration, model publication or merge belongs here. + +* Research sources +The reference separates semantic patterns, style roles, output context and audience. +Those ideas inform contracts and examples; reference prose is not an execution or +policy input. Its particular palettes, fixed numeric caps and closed diagram list +are not imposed as framework-wide rules. + +- [[https://github.com/cathrynlavery/diagram-design/blob/main/skills/diagram-design/references/semantic-patterns.md][Semantic patterns]] +- [[https://github.com/cathrynlavery/diagram-design/blob/main/skills/diagram-design/references/style-guide.md][Style roles]] +- [[https://github.com/cathrynlavery/diagram-design/blob/main/skills/diagram-design/references/output-spec.md][Output / audience specification]] +- [[https://effect.website/docs/v4/schema/introduction][Effect Schema documentation]] +- [[https://valibot.dev/guides/introduction/][Valibot documentation]] + +* Local qualification record +Package/example typecheck passed. The unit lane passed 41 tests including SDK +post-projection binding and seeded subject-set PBT; Playwright passed 34 controls +with two workers; the Case lane passed 3 tests. The existing ten full explanatory +variants, two comparison sheets and twelve component views were regenerated, then +their source/output fingerprints checked. The new three Design candidates and +comparison image closure were checked independently before refreshing documents. + +An independently installed tarball consumer typechecked with the declared SDK / +Playwright peers, rendered a source-declared model, and evaluated built-in plus +custom Taste rules through public subpaths. Stale output and unknown-focal negative +controls refused. Archive SHA256: +=30e024fa408732a1aeb747f45a8b3f3d7c7a326479309289804f9775edb815f2=. +Its local receipts are retained in =/private/tmp/de-design-taste-consumer/=. +These are local qualification records. Final-head Linux/macOS results belong to +[[https://github.com/hardenedlinux/deterministic-engineering/pull/2/checks][original PR #2 checks]]. diff --git a/docs/10-19-design/10-architecture/10.146-taste-selection-and-reuse.org b/docs/10-19-design/10-architecture/10.146-taste-selection-and-reuse.org new file mode 100644 index 0000000..b628602 --- /dev/null +++ b/docs/10-19-design/10-architecture/10.146-taste-selection-and-reuse.org @@ -0,0 +1,111 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# SPDX-License-Identifier: LGPL-2.1-or-later + +#+title: 10.146 Taste selection, source observations and REUSE + +* Responsibility and calls +10.145 post-export inspection remains useful, but cannot choose a composition. +selectTaste(input, policies) now precedes composeFigure and exportFigure. +Question subjectRefs/relationRefs bind to the existing captured model; selected +source projections bind to captured sourceRef and exact excerpt. Generic pure +policies choose focal subjects, optional graph scope, existing ELK direction and +open visual roles. Model labels, mandatory subjects/relations, source bytes and +intent cannot be rewritten by a selection. No new solver or model is introduced. + +The source declaration selects Questions and evidence per variant. The same +program handles adopter, maintainer and source-gap, including unseen Questions +and renamed identities. These are changed inputs, not three hardcoded recipes. +Required fidelity and explicit group boundaries remain retained. Missing source +observations appear in measured node content, avoiding a color-only distinction. +Architecture and Workflow remain separate views. README uses sketchbook throughout. + +* Trust and invalidation +An EvidenceProjection is a declared, source-bound display observation. Its state +is not a verifier receipt, C/Q/R, authenticated execution or authorization. +Supported never grants acceptance. Unknown IDs, absent excerpt, unselected refs, +changed input under an old selection, or attempted fidelity removal refuse. +Reselection is explicit. The selection trace carries rule identity, rationale, +Question/subject/source refs and the complete input binding. Post-export review +still checks actual hashes and observations; readability is not aesthetic proof. + +* Licensing and generated outputs +Use official REUSE tools and CI, not a parallel license checker. Source headers +use each language's comment syntax; JSON/PNG use standard adjacent .license files. +Existing mixed licenses remain untouched. License texts are shipped with the +render package. Host-supplied export attribution is optional and never assumes +ownership of downstream work. Example publishers supply project and actual +embedded-font notices before HTML/SVG hashes are calculated. Font-free PNGs +retain project attribution through sidecars. Historical exports are historical; +adding notices does not make old source receipts current evidence. + +* Acceptance +Positive: changed Questions change focal and ELK direction; selected adverse +source observations alter hierarchy and measured content; unseen IDs work; +mandatory model closure remains; both export formats carry correct notices; +README image receipts identify Rough.js/Kalam; official reuse lint is clean. +Negative: unknown references, missing source excerpts, stale selection, model or +fidelity mutation, misleading approval, malformed comment attribution, hidden +required subjects and failed output bindings refuse. Tests run through existing +Bun/Playwright entry points with two workers and existing resource limits. +Linux/macOS exact-head CI remains required before declaring remote acceptance. + +* Local qualification +Frozen Bun installation reports no dependency changes. Typecheck, 45 unit tests, +35 browser tests with two workers, and 4 example tests pass. The README regression +checks sketch drawing and Kalam against actual D2-selected themes. Generation +refreshes 12 measured scene views and 44 complete-overview/gallery artifacts; +three Taste candidates have verified source/output hashes and distinct selections. + +Official REUSE 6.3.0 reports 725/725 files with copyright and license information, +zero missing or invalid licenses, and REUSE Specification 3.3 compliance. The +packed archive SHA256 is abd7bcba27ba23d0260c65534c897e902fd4c814c1e4fbf8704c87429804b44c. +An independent consumer installs that archive, typechecks, changes Question/source +inputs, refuses stale selections and exports host-attributed HTML/SVG. This local +receipt is separate from exact-head Linux/macOS and REUSE CI status in the PR. + +The project owner clarified that the grant is LGPL-2.1-or-later. All project +headers, sidecars, package metadata and export attribution now use that grant; +LGPL-2.1-only license texts are removed. The subsequent provenance audit below +supersedes the earlier decision to preserve the concurrency test's mixed notice. + +The package reuses its existing LICENSE for the LGPL text and ships the unmodified +font text as LICENSE.OFL-1.1. Duplicate nested license copies and erroneous project +sidecars for those canonical texts are removed; license documents are not assigned +the project's copyright. Root LICENSES retains the canonical referenced texts. + +* Concurrency test provenance and copyright correction +The unsquashed PR #1 history shows the complete file was created in +9c8f608bfb2475694a8aaee2e0707838e7e9f4b8, authored by guangtao +, alongside this project's Justfile concurrency +configuration. The mixed header is already present in that creation patch; +it was not introduced by the squash merge 253a926. Commit +65725bd13b8e0519972bdcc4289ec364d2d971c6 only replaces the queried compiler API +with __available-cores; it leaves the header unchanged. + +The 24-line test invokes this repository's Justfile and checks caller concurrency +propagation. Its imports are std/test, this-source-file and run-process; there is +no vendored implementation or recorded upstream copy/rename in its file history. +The available evidence supports project-authored test code, not an Apache code +import. The earlier decision based only on the pre-existing header was insufficient. +Following the project owner's instruction, the test now uses LGPL-2.1-or-later; +Apache text is removed because no current source declaration requires it. + +Project-owned headers, sidecars and example export defaults now identify +2026 hardenedlinux Linux Team and Contributors. Actual Inter, Kalam and Adobe +font notices are unchanged. These corrections do not alter test bodies, resource +limits or upstream code. Current exported artifacts must be regenerated before +their source/output bindings are accepted. Historical export receipts remain +historical and are not promoted by changing their copyright comments. + +Reproduce the audit from the original PR history: +#+begin_src sh +git fetch origin pull/1/head +git log --follow --diff-filter=A -p FETCH_HEAD -- t/native-concurrency-test.ss +git show 65725bd13b8e0519972bdcc4289ec364d2d971c6 -- t/native-concurrency-test.ss +#+end_src + +A comparison against the preceding revision confirms that all 156 historical +HTML/SVG third-party font notice sets are preserved, while the old project owner +notice is absent from current tracked files. The concurrency test body is byte-for- +byte unchanged after its two header lines. REUSE now reports only +LGPL-2.1-or-later and OFL-1.1 as used licenses, with no Apache requirement. diff --git a/docs/10-19-design/10-architecture/10.15-scheme-owned-rust-mechanisms-and-development-evidence.org b/docs/10-19-design/10-architecture/10.15-scheme-owned-rust-mechanisms-and-development-evidence.org index 6259a7f..95ae55e 100644 --- a/docs/10-19-design/10-architecture/10.15-scheme-owned-rust-mechanisms-and-development-evidence.org +++ b/docs/10-19-design/10-architecture/10.15-scheme-owned-rust-mechanisms-and-development-evidence.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.15 Scheme-Owned Rust Mechanisms and Development Evidence #+LANGUAGE: en #+PROPERTY: JD_ID 10.15 diff --git a/docs/10-19-design/10-architecture/10.16-tokio-broadcast-close-and-wake-library.org b/docs/10-19-design/10-architecture/10.16-tokio-broadcast-close-and-wake-library.org index eb6b2ad..cb1a435 100644 --- a/docs/10-19-design/10-architecture/10.16-tokio-broadcast-close-and-wake-library.org +++ b/docs/10-19-design/10-architecture/10.16-tokio-broadcast-close-and-wake-library.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.16 Tokio Broadcast Close and Wake Library Entry #+LANGUAGE: en #+PROPERTY: JD_ID 10.16 diff --git a/docs/10-19-design/10-architecture/10.17-domain-libraries-and-atomic-specialization.org b/docs/10-19-design/10-architecture/10.17-domain-libraries-and-atomic-specialization.org index bf2b8cc..8b1186c 100644 --- a/docs/10-19-design/10-architecture/10.17-domain-libraries-and-atomic-specialization.org +++ b/docs/10-19-design/10-architecture/10.17-domain-libraries-and-atomic-specialization.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.17 Engineering Domain Libraries and Atomic Specialization #+LANGUAGE: en #+PROPERTY: JD_ID 10.17 diff --git a/docs/10-19-design/10-architecture/10.18-agent-authored-engineering-and-review-contracts.org b/docs/10-19-design/10-architecture/10.18-agent-authored-engineering-and-review-contracts.org index b0d4057..df847cf 100644 --- a/docs/10-19-design/10-architecture/10.18-agent-authored-engineering-and-review-contracts.org +++ b/docs/10-19-design/10-architecture/10.18-agent-authored-engineering-and-review-contracts.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.18 Agent-Authored Engineering, Explanation and Review Contracts #+LANGUAGE: en #+PROPERTY: JD_ID 10.18 diff --git a/docs/10-19-design/10-architecture/10.19-standard-identities-and-aitia-review-traceability.org b/docs/10-19-design/10-architecture/10.19-standard-identities-and-aitia-review-traceability.org index a1654cd..2202bd2 100644 --- a/docs/10-19-design/10-architecture/10.19-standard-identities-and-aitia-review-traceability.org +++ b/docs/10-19-design/10-architecture/10.19-standard-identities-and-aitia-review-traceability.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.19 Standard Identities and Lambda Aitia Review Traceability #+LANGUAGE: en #+PROPERTY: JD_ID 10.19 diff --git a/docs/10-19-design/10-architecture/10.20-evidence-arrival-and-scoped-review-recovery.org b/docs/10-19-design/10-architecture/10.20-evidence-arrival-and-scoped-review-recovery.org index 1af066e..51b65ed 100644 --- a/docs/10-19-design/10-architecture/10.20-evidence-arrival-and-scoped-review-recovery.org +++ b/docs/10-19-design/10-architecture/10.20-evidence-arrival-and-scoped-review-recovery.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.20 Evidence Arrival and Scoped Review Recovery #+LANGUAGE: en #+PROPERTY: JD_ID 10.20 diff --git a/docs/10-19-design/10-architecture/10.21-engineering-design-audit-and-delivery-plan.org b/docs/10-19-design/10-architecture/10.21-engineering-design-audit-and-delivery-plan.org index d88c290..f15800a 100644 --- a/docs/10-19-design/10-architecture/10.21-engineering-design-audit-and-delivery-plan.org +++ b/docs/10-19-design/10-architecture/10.21-engineering-design-audit-and-delivery-plan.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.21 Engineering Design Audit and Next Delivery Plan #+LANGUAGE: en #+PROPERTY: JD_ID 10.21 diff --git a/docs/10-19-design/10-architecture/10.22-domain-library-delivery-and-native-admission.org b/docs/10-19-design/10-architecture/10.22-domain-library-delivery-and-native-admission.org index 00e800c..b5be799 100644 --- a/docs/10-19-design/10-architecture/10.22-domain-library-delivery-and-native-admission.org +++ b/docs/10-19-design/10-architecture/10.22-domain-library-delivery-and-native-admission.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.22 Domain Library Delivery and Native Admission #+LANGUAGE: en #+PROPERTY: JD_ID 10.22 diff --git a/docs/10-19-design/10-architecture/10.23-native-aitia-backpressure-content-review.org b/docs/10-19-design/10-architecture/10.23-native-aitia-backpressure-content-review.org index 1c4aa2e..b92c455 100644 --- a/docs/10-19-design/10-architecture/10.23-native-aitia-backpressure-content-review.org +++ b/docs/10-19-design/10-architecture/10.23-native-aitia-backpressure-content-review.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.23 Native Aitia Backpressure Content Review #+LANGUAGE: en #+PROPERTY: JD_ID 10.23 diff --git a/docs/10-19-design/10-architecture/10.24-sysml-interoperability-and-authority-boundaries.org b/docs/10-19-design/10-architecture/10.24-sysml-interoperability-and-authority-boundaries.org index a2e16e7..00e41a7 100644 --- a/docs/10-19-design/10-architecture/10.24-sysml-interoperability-and-authority-boundaries.org +++ b/docs/10-19-design/10-architecture/10.24-sysml-interoperability-and-authority-boundaries.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.24 SysML Interoperability and Authority Boundaries #+LANGUAGE: en #+PROPERTY: JD_ID 10.24 diff --git a/docs/10-19-design/10-architecture/10.25-rust-sysml-quint-lean-evidence-integration.org b/docs/10-19-design/10-architecture/10.25-rust-sysml-quint-lean-evidence-integration.org index 4d14a63..a20c943 100644 --- a/docs/10-19-design/10-architecture/10.25-rust-sysml-quint-lean-evidence-integration.org +++ b/docs/10-19-design/10-architecture/10.25-rust-sysml-quint-lean-evidence-integration.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.25 Rust, SysML, Quint and Lean Evidence Integration #+LANGUAGE: en #+PROPERTY: JD_ID 10.25 diff --git a/docs/10-19-design/10-architecture/10.26-backpressure-public-contracts.org b/docs/10-19-design/10-architecture/10.26-backpressure-public-contracts.org index bfe136f..12e3e9c 100644 --- a/docs/10-19-design/10-architecture/10.26-backpressure-public-contracts.org +++ b/docs/10-19-design/10-architecture/10.26-backpressure-public-contracts.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.26 Backpressure Public Contracts: Library, Profile and Scenario #+LANGUAGE: en #+PROPERTY: JD_ID 10.26 diff --git a/docs/10-19-design/10-architecture/10.27-library-delivery-repo-workflow-and-backpressure-audit.org b/docs/10-19-design/10-architecture/10.27-library-delivery-repo-workflow-and-backpressure-audit.org index a2f0dd7..aeadb2e 100644 --- a/docs/10-19-design/10-architecture/10.27-library-delivery-repo-workflow-and-backpressure-audit.org +++ b/docs/10-19-design/10-architecture/10.27-library-delivery-repo-workflow-and-backpressure-audit.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.27 Library Delivery, Agent Repository Workflow and Backpressure Audit #+LANGUAGE: en #+PROPERTY: JD_ID 10.27 diff --git a/docs/10-19-design/10-architecture/10.28-network-service-agent-design-walkthrough.org b/docs/10-19-design/10-architecture/10.28-network-service-agent-design-walkthrough.org index e9af361..bbf03ed 100644 --- a/docs/10-19-design/10-architecture/10.28-network-service-agent-design-walkthrough.org +++ b/docs/10-19-design/10-architecture/10.28-network-service-agent-design-walkthrough.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.28 Network Service Repository: Agent Design Walkthrough #+LANGUAGE: en #+PROPERTY: JD_ID 10.28 diff --git a/docs/10-19-design/10-architecture/10.29-workflow-capabilities-and-minimum-completion.org b/docs/10-19-design/10-architecture/10.29-workflow-capabilities-and-minimum-completion.org index b798a9d..c5a6473 100644 --- a/docs/10-19-design/10-architecture/10.29-workflow-capabilities-and-minimum-completion.org +++ b/docs/10-19-design/10-architecture/10.29-workflow-capabilities-and-minimum-completion.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.29 Workflow Capabilities and Minimum Completion #+LANGUAGE: en #+PROPERTY: JD_ID 10.29 diff --git a/docs/10-19-design/10-architecture/10.30-current-repository-engineering-case.org b/docs/10-19-design/10-architecture/10.30-current-repository-engineering-case.org index f7e8c11..d342080 100644 --- a/docs/10-19-design/10-architecture/10.30-current-repository-engineering-case.org +++ b/docs/10-19-design/10-architecture/10.30-current-repository-engineering-case.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.30 Deterministic Engineering as an Actual Repository Case #+LANGUAGE: en #+PROPERTY: JD_ID 10.30 diff --git a/docs/10-19-design/10-architecture/10.31-architecture-document-and-decision-contracts.org b/docs/10-19-design/10-architecture/10.31-architecture-document-and-decision-contracts.org index 0849a6a..3098c23 100644 --- a/docs/10-19-design/10-architecture/10.31-architecture-document-and-decision-contracts.org +++ b/docs/10-19-design/10-architecture/10.31-architecture-document-and-decision-contracts.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.31 Architecture, Document Product and Decision Contracts #+LANGUAGE: en #+PROPERTY: JD_ID 10.31 diff --git a/docs/10-19-design/10-architecture/10.32-case-content-contract-audit.org b/docs/10-19-design/10-architecture/10.32-case-content-contract-audit.org index bcc256b..d68ab92 100644 --- a/docs/10-19-design/10-architecture/10.32-case-content-contract-audit.org +++ b/docs/10-19-design/10-architecture/10.32-case-content-contract-audit.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.32 DE-CASE-01 Content Contract Audit #+LANGUAGE: en #+PROPERTY: JD_ID 10.32 diff --git a/docs/10-19-design/10-architecture/10.33-case-actual-and-target-architecture.org b/docs/10-19-design/10-architecture/10.33-case-actual-and-target-architecture.org index 2a9a462..ae427d0 100644 --- a/docs/10-19-design/10-architecture/10.33-case-actual-and-target-architecture.org +++ b/docs/10-19-design/10-architecture/10.33-case-actual-and-target-architecture.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.33 DE-CASE-01 Actual and Target Architecture #+LANGUAGE: en #+PROPERTY: JD_ID 10.33 diff --git a/docs/10-19-design/10-architecture/10.34-case-design-review-dossier-draft.org b/docs/10-19-design/10-architecture/10.34-case-design-review-dossier-draft.org index d8d955f..f168e60 100644 --- a/docs/10-19-design/10-architecture/10.34-case-design-review-dossier-draft.org +++ b/docs/10-19-design/10-architecture/10.34-case-design-review-dossier-draft.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.34 DE-CASE-01 Design Review Dossier Draft #+LANGUAGE: en #+PROPERTY: JD_ID 10.34 diff --git a/docs/10-19-design/10-architecture/10.35-content-validation-slice.org b/docs/10-19-design/10-architecture/10.35-content-validation-slice.org index 1e7cfff..cf7c56b 100644 --- a/docs/10-19-design/10-architecture/10.35-content-validation-slice.org +++ b/docs/10-19-design/10-architecture/10.35-content-validation-slice.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.35 Minimal Content Validation Slice #+LANGUAGE: en #+PROPERTY: JD_ID 10.35 diff --git a/docs/10-19-design/10-architecture/10.36-version-revision-and-namespace-audit.org b/docs/10-19-design/10-architecture/10.36-version-revision-and-namespace-audit.org index 49e81a6..33b4c1b 100644 --- a/docs/10-19-design/10-architecture/10.36-version-revision-and-namespace-audit.org +++ b/docs/10-19-design/10-architecture/10.36-version-revision-and-namespace-audit.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.36 Version, Revision and Namespace Audit #+LANGUAGE: en #+PROPERTY: JD_ID 10.36 diff --git a/docs/10-19-design/10-architecture/10.37-library-declarations-and-contract-design.org b/docs/10-19-design/10-architecture/10.37-library-declarations-and-contract-design.org index 8cec3c6..98af3be 100644 --- a/docs/10-19-design/10-architecture/10.37-library-declarations-and-contract-design.org +++ b/docs/10-19-design/10-architecture/10.37-library-declarations-and-contract-design.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.37 Library Declarations, Contract Ownership and Refinement #+LANGUAGE: en #+PROPERTY: JD_ID 10.37 diff --git a/docs/10-19-design/10-architecture/10.38-profile-selection-scenario-capture-and-evidence-use.org b/docs/10-19-design/10-architecture/10.38-profile-selection-scenario-capture-and-evidence-use.org index b46a513..e0c663c 100644 --- a/docs/10-19-design/10-architecture/10.38-profile-selection-scenario-capture-and-evidence-use.org +++ b/docs/10-19-design/10-architecture/10.38-profile-selection-scenario-capture-and-evidence-use.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.38 Profile Selection, Scenario Capture and Shared Evidence Use #+LANGUAGE: en #+PROPERTY: JD_ID 10.38 diff --git a/docs/10-19-design/10-architecture/10.39-method-execution-evidence-issuance-and-ascent-projection.org b/docs/10-19-design/10-architecture/10.39-method-execution-evidence-issuance-and-ascent-projection.org index fe86bb0..4ffe6af 100644 --- a/docs/10-19-design/10-architecture/10.39-method-execution-evidence-issuance-and-ascent-projection.org +++ b/docs/10-19-design/10-architecture/10.39-method-execution-evidence-issuance-and-ascent-projection.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.39 Method Execution, Evidence Issuance and ASCENT Projection #+LANGUAGE: en #+PROPERTY: JD_ID 10.39 diff --git a/docs/10-19-design/10-architecture/10.40-aitia-review-and-recipient-delivery.org b/docs/10-19-design/10-architecture/10.40-aitia-review-and-recipient-delivery.org index 3645097..80da9c4 100644 --- a/docs/10-19-design/10-architecture/10.40-aitia-review-and-recipient-delivery.org +++ b/docs/10-19-design/10-architecture/10.40-aitia-review-and-recipient-delivery.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.40 Aitia Review and Recipient Delivery #+LANGUAGE: en #+PROPERTY: JD_ID 10.40 diff --git a/docs/10-19-design/10-architecture/10.41-workflow-gap-audit.org b/docs/10-19-design/10-architecture/10.41-workflow-gap-audit.org index f0bd026..177d1c4 100644 --- a/docs/10-19-design/10-architecture/10.41-workflow-gap-audit.org +++ b/docs/10-19-design/10-architecture/10.41-workflow-gap-audit.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.41 Workflow Gap Audit and Refactoring Plan #+LANGUAGE: en #+PROPERTY: JD_ID 10.41 diff --git a/docs/10-19-design/10-architecture/10.42-library-types-and-contracts.org b/docs/10-19-design/10-architecture/10.42-library-types-and-contracts.org index 4cf0b68..3f86cd8 100644 --- a/docs/10-19-design/10-architecture/10.42-library-types-and-contracts.org +++ b/docs/10-19-design/10-architecture/10.42-library-types-and-contracts.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.42 Library Types and Contracts: WP01 Detailed Design #+LANGUAGE: en #+PROPERTY: JD_ID 10.42 diff --git a/docs/10-19-design/10-architecture/10.43-library-objects-and-publication.org b/docs/10-19-design/10-architecture/10.43-library-objects-and-publication.org index 9a06c5c..f7aeb3e 100644 --- a/docs/10-19-design/10-architecture/10.43-library-objects-and-publication.org +++ b/docs/10-19-design/10-architecture/10.43-library-objects-and-publication.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.43 Library Objects, Configuration and Publication: WP02 Detailed Design #+LANGUAGE: en #+PROPERTY: JD_ID 10.43 diff --git a/docs/10-19-design/10-architecture/10.44-profile-selection-and-scenario-capture.org b/docs/10-19-design/10-architecture/10.44-profile-selection-and-scenario-capture.org index f1b3112..e62c353 100644 --- a/docs/10-19-design/10-architecture/10.44-profile-selection-and-scenario-capture.org +++ b/docs/10-19-design/10-architecture/10.44-profile-selection-and-scenario-capture.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.44 Profile Selection and Scenario Binding/Capture: WP03 Detailed Design #+LANGUAGE: en #+PROPERTY: JD_ID 10.44 diff --git a/docs/10-19-design/10-architecture/10.45-method-execution-and-evidence-issuance.org b/docs/10-19-design/10-architecture/10.45-method-execution-and-evidence-issuance.org index 7d22448..c83f3fc 100644 --- a/docs/10-19-design/10-architecture/10.45-method-execution-and-evidence-issuance.org +++ b/docs/10-19-design/10-architecture/10.45-method-execution-and-evidence-issuance.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.45 Method Execution and Evidence Issuance: WP04 Detailed Design #+LANGUAGE: en #+PROPERTY: JD_ID 10.45 diff --git a/docs/10-19-design/10-architecture/10.46-content-observers-and-reference-closure.org b/docs/10-19-design/10-architecture/10.46-content-observers-and-reference-closure.org index 7e74638..be1a771 100644 --- a/docs/10-19-design/10-architecture/10.46-content-observers-and-reference-closure.org +++ b/docs/10-19-design/10-architecture/10.46-content-observers-and-reference-closure.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.46 Content Observers and Reference Closure: WP05 Detailed Design #+LANGUAGE: en #+PROPERTY: JD_ID 10.46 diff --git a/docs/10-19-design/10-architecture/10.47-ascent-projection-and-query-view.org b/docs/10-19-design/10-architecture/10.47-ascent-projection-and-query-view.org index 26e6025..4a5f7eb 100644 --- a/docs/10-19-design/10-architecture/10.47-ascent-projection-and-query-view.org +++ b/docs/10-19-design/10-architecture/10.47-ascent-projection-and-query-view.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.47 ASCENT Application Projection and Determinate Query View: WP06 Detailed Design #+LANGUAGE: en #+PROPERTY: JD_ID 10.47 diff --git a/docs/10-19-design/10-architecture/10.48-aitia-review-adaptation.org b/docs/10-19-design/10-architecture/10.48-aitia-review-adaptation.org index 034b16c..4b71de7 100644 --- a/docs/10-19-design/10-architecture/10.48-aitia-review-adaptation.org +++ b/docs/10-19-design/10-architecture/10.48-aitia-review-adaptation.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.48 Aitia Review Adaptation: WP07 Detailed Design #+LANGUAGE: en #+PROPERTY: JD_ID 10.48 diff --git a/docs/10-19-design/10-architecture/10.49-history-authority-and-reassessment.org b/docs/10-19-design/10-architecture/10.49-history-authority-and-reassessment.org index b8238df..50172fc 100644 --- a/docs/10-19-design/10-architecture/10.49-history-authority-and-reassessment.org +++ b/docs/10-19-design/10-architecture/10.49-history-authority-and-reassessment.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.49 History Discovery, Decision Authority and Reassessment: WP08 Detailed Design #+LANGUAGE: en #+PROPERTY: JD_ID 10.49 diff --git a/docs/10-19-design/10-architecture/10.50-library-delivery-and-recipient-use.org b/docs/10-19-design/10-architecture/10.50-library-delivery-and-recipient-use.org index 7407fbd..1247da8 100644 --- a/docs/10-19-design/10-architecture/10.50-library-delivery-and-recipient-use.org +++ b/docs/10-19-design/10-architecture/10.50-library-delivery-and-recipient-use.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.50 Library Delivery, Recipient Verification, Adoption and Use: WP09 Detailed Design #+LANGUAGE: en #+PROPERTY: JD_ID 10.50 diff --git a/docs/10-19-design/10-architecture/10.51-case-joint-acceptance-plan.org b/docs/10-19-design/10-architecture/10.51-case-joint-acceptance-plan.org index 74581cd..933ba01 100644 --- a/docs/10-19-design/10-architecture/10.51-case-joint-acceptance-plan.org +++ b/docs/10-19-design/10-architecture/10.51-case-joint-acceptance-plan.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.51 DE-CASE-01 Joint Acceptance Plan: WP10 Detailed Design #+LANGUAGE: en #+PROPERTY: JD_ID 10.51 diff --git a/docs/10-19-design/10-architecture/10.52-contract-consistency-and-implementation-order.org b/docs/10-19-design/10-architecture/10.52-contract-consistency-and-implementation-order.org index 798bb34..4ff3520 100644 --- a/docs/10-19-design/10-architecture/10.52-contract-consistency-and-implementation-order.org +++ b/docs/10-19-design/10-architecture/10.52-contract-consistency-and-implementation-order.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.52 Whole-Slice Contract Consistency Audit and Implementation Order #+LANGUAGE: en #+PROPERTY: JD_ID 10.52 diff --git a/docs/10-19-design/10-architecture/10.53-source-build-and-recovery-baseline.org b/docs/10-19-design/10-architecture/10.53-source-build-and-recovery-baseline.org index a0c0d06..ced6109 100644 --- a/docs/10-19-design/10-architecture/10.53-source-build-and-recovery-baseline.org +++ b/docs/10-19-design/10-architecture/10.53-source-build-and-recovery-baseline.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.53 S0 Source, Dependency, Build and Recovery Baseline #+LANGUAGE: en #+PROPERTY: JD_ID 10.53 diff --git a/docs/10-19-design/10-architecture/10.54-library-and-aitia-types-contracts.org b/docs/10-19-design/10-architecture/10.54-library-and-aitia-types-contracts.org index 6c1d336..c209cdc 100644 --- a/docs/10-19-design/10-architecture/10.54-library-and-aitia-types-contracts.org +++ b/docs/10-19-design/10-architecture/10.54-library-and-aitia-types-contracts.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.54 S1 Library and Aitia Types and Contracts: Coordinated Refactoring Design #+LANGUAGE: en #+PROPERTY: JD_ID 10.54 diff --git a/docs/10-19-design/10-architecture/10.55-library-construction-and-scope-handoff.org b/docs/10-19-design/10-architecture/10.55-library-construction-and-scope-handoff.org index 69524f0..ca5bdeb 100644 --- a/docs/10-19-design/10-architecture/10.55-library-construction-and-scope-handoff.org +++ b/docs/10-19-design/10-architecture/10.55-library-construction-and-scope-handoff.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.55 S2 Library Construction, Publication and Core Scope Handoff #+LANGUAGE: en #+PROPERTY: JD_ID 10.55 diff --git a/docs/10-19-design/10-architecture/10.56-profile-selection-and-scenario-capture.org b/docs/10-19-design/10-architecture/10.56-profile-selection-and-scenario-capture.org index 26a2114..6292403 100644 --- a/docs/10-19-design/10-architecture/10.56-profile-selection-and-scenario-capture.org +++ b/docs/10-19-design/10-architecture/10.56-profile-selection-and-scenario-capture.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.56 S3 Profile Selection, Scenario Binding and Unique Capture #+LANGUAGE: en #+PROPERTY: JD_ID 10.56 diff --git a/docs/10-19-design/10-architecture/10.57-method-execution-and-evidence-issuance.org b/docs/10-19-design/10-architecture/10.57-method-execution-and-evidence-issuance.org index 2da81b2..2ebf31c 100644 --- a/docs/10-19-design/10-architecture/10.57-method-execution-and-evidence-issuance.org +++ b/docs/10-19-design/10-architecture/10.57-method-execution-and-evidence-issuance.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.57 S4a Method Execution, Evidence Issuance and Qualified Use #+LANGUAGE: en #+PROPERTY: JD_ID 10.57 diff --git a/docs/10-19-design/10-architecture/10.58-content-observers-and-reference-closure.org b/docs/10-19-design/10-architecture/10.58-content-observers-and-reference-closure.org index 521a8fa..24257c2 100644 --- a/docs/10-19-design/10-architecture/10.58-content-observers-and-reference-closure.org +++ b/docs/10-19-design/10-architecture/10.58-content-observers-and-reference-closure.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.58 S4b Content Observers and Reference Closure #+LANGUAGE: en #+PROPERTY: JD_ID 10.58 diff --git a/docs/10-19-design/10-architecture/10.59-ascent-projection-and-query-view.org b/docs/10-19-design/10-architecture/10.59-ascent-projection-and-query-view.org index fd854c9..419b01b 100644 --- a/docs/10-19-design/10-architecture/10.59-ascent-projection-and-query-view.org +++ b/docs/10-19-design/10-architecture/10.59-ascent-projection-and-query-view.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.59 S5 ASCENT Application Projection and Determinate Query View #+LANGUAGE: en #+PROPERTY: JD_ID 10.59 diff --git a/docs/10-19-design/10-architecture/10.60-aitia-review-adaptation.org b/docs/10-19-design/10-architecture/10.60-aitia-review-adaptation.org index 87eb15b..12890d1 100644 --- a/docs/10-19-design/10-architecture/10.60-aitia-review-adaptation.org +++ b/docs/10-19-design/10-architecture/10.60-aitia-review-adaptation.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.60 S6 Aitia Review Adaptation and Causal Claim Scrutiny #+LANGUAGE: en #+PROPERTY: JD_ID 10.60 diff --git a/docs/10-19-design/10-architecture/10.61-history-authority-and-reassessment.org b/docs/10-19-design/10-architecture/10.61-history-authority-and-reassessment.org index b890b84..01aa645 100644 --- a/docs/10-19-design/10-architecture/10.61-history-authority-and-reassessment.org +++ b/docs/10-19-design/10-architecture/10.61-history-authority-and-reassessment.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.61 S7 History Discovery, Decision Authority and Reassessment #+LANGUAGE: en #+PROPERTY: JD_ID 10.61 diff --git a/docs/10-19-design/10-architecture/10.62-library-delivery-and-recipient-use.org b/docs/10-19-design/10-architecture/10.62-library-delivery-and-recipient-use.org index 03fd2ce..9ea0ce0 100644 --- a/docs/10-19-design/10-architecture/10.62-library-delivery-and-recipient-use.org +++ b/docs/10-19-design/10-architecture/10.62-library-delivery-and-recipient-use.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.62 S8 Library Delivery, Recipient Verification, Adoption and Use #+LANGUAGE: en #+PROPERTY: JD_ID 10.62 diff --git a/docs/10-19-design/10-architecture/10.63-case-joint-acceptance-plan.org b/docs/10-19-design/10-architecture/10.63-case-joint-acceptance-plan.org index 6857c75..6b6fabd 100644 --- a/docs/10-19-design/10-architecture/10.63-case-joint-acceptance-plan.org +++ b/docs/10-19-design/10-architecture/10.63-case-joint-acceptance-plan.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.63 S9 DE-CASE-01 Joint Acceptance and Research Comparison Plan #+LANGUAGE: en #+PROPERTY: JD_ID 10.63 diff --git a/docs/10-19-design/10-architecture/10.64-contract-consistency-and-implementation-order.org b/docs/10-19-design/10-architecture/10.64-contract-consistency-and-implementation-order.org index a499b5f..2ad3bf7 100644 --- a/docs/10-19-design/10-architecture/10.64-contract-consistency-and-implementation-order.org +++ b/docs/10-19-design/10-architecture/10.64-contract-consistency-and-implementation-order.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.64 S1-S9 Whole-Chain Consistency Audit and Implementation Order #+LANGUAGE: en #+PROPERTY: JD_ID 10.64 diff --git a/docs/10-19-design/10-architecture/10.65-ascent-migration-and-contract-handoff.org b/docs/10-19-design/10-architecture/10.65-ascent-migration-and-contract-handoff.org index e051130..8f234df 100644 --- a/docs/10-19-design/10-architecture/10.65-ascent-migration-and-contract-handoff.org +++ b/docs/10-19-design/10-architecture/10.65-ascent-migration-and-contract-handoff.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.65 P0 ASCENT Migration, Contract Handoff and Load Closure #+LANGUAGE: en #+PROPERTY: JD_ID 10.65 diff --git a/docs/10-19-design/10-architecture/10.66-effective-types-and-contract-closure.org b/docs/10-19-design/10-architecture/10.66-effective-types-and-contract-closure.org index 8d4266f..9319883 100644 --- a/docs/10-19-design/10-architecture/10.66-effective-types-and-contract-closure.org +++ b/docs/10-19-design/10-architecture/10.66-effective-types-and-contract-closure.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.66 P1 Complete Effective Types and Contract Closure #+LANGUAGE: en #+PROPERTY: JD_ID 10.66 diff --git a/docs/10-19-design/10-architecture/10.67-library-construction-publication-and-scope-handoff.org b/docs/10-19-design/10-architecture/10.67-library-construction-publication-and-scope-handoff.org index 41429b1..1575541 100644 --- a/docs/10-19-design/10-architecture/10.67-library-construction-publication-and-scope-handoff.org +++ b/docs/10-19-design/10-architecture/10.67-library-construction-publication-and-scope-handoff.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.67 P2 Library Construction, Publication and Checked Scope Handoff #+LANGUAGE: en #+PROPERTY: JD_ID 10.67 diff --git a/docs/10-19-design/10-architecture/10.68-profile-selection-scenario-binding-and-capture.org b/docs/10-19-design/10-architecture/10.68-profile-selection-scenario-binding-and-capture.org index b948593..259f5cf 100644 --- a/docs/10-19-design/10-architecture/10.68-profile-selection-scenario-binding-and-capture.org +++ b/docs/10-19-design/10-architecture/10.68-profile-selection-scenario-binding-and-capture.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.68 P3 Profile Selection, Scenario Binding and Capture Origin #+LANGUAGE: en #+PROPERTY: JD_ID 10.68 diff --git a/docs/10-19-design/10-architecture/10.69-method-content-execution-and-evidence-issuance.org b/docs/10-19-design/10-architecture/10.69-method-content-execution-and-evidence-issuance.org index 921a111..e0eb215 100644 --- a/docs/10-19-design/10-architecture/10.69-method-content-execution-and-evidence-issuance.org +++ b/docs/10-19-design/10-architecture/10.69-method-content-execution-and-evidence-issuance.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.69 P4 Method Execution, Content Observation and Evidence Issuance #+LANGUAGE: en #+PROPERTY: JD_ID 10.69 diff --git a/docs/10-19-design/10-architecture/10.70-ascent-projection-and-determinate-query-view.org b/docs/10-19-design/10-architecture/10.70-ascent-projection-and-determinate-query-view.org index 4ac540c..3bb122f 100644 --- a/docs/10-19-design/10-architecture/10.70-ascent-projection-and-determinate-query-view.org +++ b/docs/10-19-design/10-architecture/10.70-ascent-projection-and-determinate-query-view.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.70 P5 ASCENT Projection and Determinate Query View #+LANGUAGE: en #+PROPERTY: JD_ID 10.70 diff --git a/docs/10-19-design/10-architecture/10.71-aitia-review-adaptation-and-current-use.org b/docs/10-19-design/10-architecture/10.71-aitia-review-adaptation-and-current-use.org index 221c3c2..27bed0b 100644 --- a/docs/10-19-design/10-architecture/10.71-aitia-review-adaptation-and-current-use.org +++ b/docs/10-19-design/10-architecture/10.71-aitia-review-adaptation-and-current-use.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.71 P6 Aitia Review Adaptation and Current Use #+LANGUAGE: en #+PROPERTY: JD_ID 10.71 diff --git a/docs/10-19-design/10-architecture/10.72-history-authority-reassessment-and-withdrawal.org b/docs/10-19-design/10-architecture/10.72-history-authority-reassessment-and-withdrawal.org index 07f324a..1f1e4bd 100644 --- a/docs/10-19-design/10-architecture/10.72-history-authority-reassessment-and-withdrawal.org +++ b/docs/10-19-design/10-architecture/10.72-history-authority-reassessment-and-withdrawal.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.72 P7 History, Authority, Reassessment and Withdrawal #+LANGUAGE: en #+PROPERTY: JD_ID 10.72 diff --git a/docs/10-19-design/10-architecture/10.73-library-delivery-and-recipient-adoption-use.org b/docs/10-19-design/10-architecture/10.73-library-delivery-and-recipient-adoption-use.org index bdb98d0..ab4b10f 100644 --- a/docs/10-19-design/10-architecture/10.73-library-delivery-and-recipient-adoption-use.org +++ b/docs/10-19-design/10-architecture/10.73-library-delivery-and-recipient-adoption-use.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.73 P8 Library Delivery and Recipient Adoption and Use #+LANGUAGE: en #+PROPERTY: JD_ID 10.73 diff --git a/docs/10-19-design/10-architecture/10.74-case-joint-acceptance-and-research-plan.org b/docs/10-19-design/10-architecture/10.74-case-joint-acceptance-and-research-plan.org index 3c5f10e..fd0babc 100644 --- a/docs/10-19-design/10-architecture/10.74-case-joint-acceptance-and-research-plan.org +++ b/docs/10-19-design/10-architecture/10.74-case-joint-acceptance-and-research-plan.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.74 P9 DE-CASE-01 Joint Acceptance and Research Plan #+LANGUAGE: en #+PROPERTY: JD_ID 10.74 diff --git a/docs/10-19-design/10-architecture/10.75-contract-consistency-and-refactoring-order.org b/docs/10-19-design/10-architecture/10.75-contract-consistency-and-refactoring-order.org index b410b42..224b5d4 100644 --- a/docs/10-19-design/10-architecture/10.75-contract-consistency-and-refactoring-order.org +++ b/docs/10-19-design/10-architecture/10.75-contract-consistency-and-refactoring-order.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.75 P1-P9 Consistency Audit and Refactoring Order #+LANGUAGE: en #+PROPERTY: JD_ID 10.75 diff --git a/docs/10-19-design/10-architecture/10.76-dependency-build-load-and-normalized-handoff.org b/docs/10-19-design/10-architecture/10.76-dependency-build-load-and-normalized-handoff.org index e496546..08fefca 100644 --- a/docs/10-19-design/10-architecture/10.76-dependency-build-load-and-normalized-handoff.org +++ b/docs/10-19-design/10-architecture/10.76-dependency-build-load-and-normalized-handoff.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.76 P0 Dependency, Build, Load and Normalized Handoff #+LANGUAGE: en #+PROPERTY: JD_ID 10.76 diff --git a/docs/10-19-design/10-architecture/10.77-effective-types-contracts-and-origin-lifetime.org b/docs/10-19-design/10-architecture/10.77-effective-types-contracts-and-origin-lifetime.org index bf1c9ce..ee44f76 100644 --- a/docs/10-19-design/10-architecture/10.77-effective-types-contracts-and-origin-lifetime.org +++ b/docs/10-19-design/10-architecture/10.77-effective-types-contracts-and-origin-lifetime.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.77 P1 Effective Types, Contracts and Capture-Origin Lifetime #+LANGUAGE: en #+PROPERTY: JD_ID 10.77 diff --git a/docs/10-19-design/10-architecture/10.78-agent-sysml-project-formation.org b/docs/10-19-design/10-architecture/10.78-agent-sysml-project-formation.org index 583da29..b3e982a 100644 --- a/docs/10-19-design/10-architecture/10.78-agent-sysml-project-formation.org +++ b/docs/10-19-design/10-architecture/10.78-agent-sysml-project-formation.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.78 Agent-Driven SysML Project Formation #+LANGUAGE: en #+PROPERTY: JD_ID 10.78 diff --git a/docs/10-19-design/10-architecture/10.78-case-organization.sysml b/docs/10-19-design/10-architecture/10.78-case-organization.sysml index f224696..6bdb36d 100644 --- a/docs/10-19-design/10-architecture/10.78-case-organization.sysml +++ b/docs/10-19-design/10-architecture/10.78-case-organization.sysml @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +// +// SPDX-License-Identifier: LGPL-2.1-or-later + // DE-CASE-01 organization model. Bounded formation runs are recorded in 10.80; no satisfaction or approval verdict. // Stable identities are existing project IDs; locations are not Contract versions. // Structural organization source: this file. Rationale/status: linked Org. Runtime truth: actual owners. diff --git a/docs/10-19-design/10-architecture/10.79-current-library-project-formation.org b/docs/10-19-design/10-architecture/10.79-current-library-project-formation.org index 0f3f905..5633d72 100644 --- a/docs/10-19-design/10-architecture/10.79-current-library-project-formation.org +++ b/docs/10-19-design/10-architecture/10.79-current-library-project-formation.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.79 Current Repository: From Library Intent to Top-Level SysML #+LANGUAGE: en #+PROPERTY: JD_ID 10.79 diff --git a/docs/10-19-design/10-architecture/10.80-declarative-project-formation.org b/docs/10-19-design/10-architecture/10.80-declarative-project-formation.org index de4102a..7a47827 100644 --- a/docs/10-19-design/10-architecture/10.80-declarative-project-formation.org +++ b/docs/10-19-design/10-architecture/10.80-declarative-project-formation.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.80 Declarative Project Formation: First ASCENT Slice #+LANGUAGE: en #+PROPERTY: JD_ID 10.80 diff --git a/docs/10-19-design/10-architecture/10.81-declarative-chain-audit.org b/docs/10-19-design/10-architecture/10.81-declarative-chain-audit.org index 174bb38..999a530 100644 --- a/docs/10-19-design/10-architecture/10.81-declarative-chain-audit.org +++ b/docs/10-19-design/10-architecture/10.81-declarative-chain-audit.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.81 Declarative Project-to-SysML Chain: Ownership and Refactoring Audit #+LANGUAGE: en #+PROPERTY: JD_ID 10.81 diff --git a/docs/10-19-design/10-architecture/10.82-a0-dependencies-and-normalized-handoff.org b/docs/10-19-design/10-architecture/10.82-a0-dependencies-and-normalized-handoff.org index 78e492b..ba4401a 100644 --- a/docs/10-19-design/10-architecture/10.82-a0-dependencies-and-normalized-handoff.org +++ b/docs/10-19-design/10-architecture/10.82-a0-dependencies-and-normalized-handoff.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.82 A0 Dependency, Build/Load Sources and Normalized Scope Handoff #+LANGUAGE: en #+PROPERTY: JD_ID 10.82 diff --git a/docs/10-19-design/10-architecture/10.83-a1-effective-declarations-and-contracts.org b/docs/10-19-design/10-architecture/10.83-a1-effective-declarations-and-contracts.org index 0d937ca..05546f5 100644 --- a/docs/10-19-design/10-architecture/10.83-a1-effective-declarations-and-contracts.org +++ b/docs/10-19-design/10-architecture/10.83-a1-effective-declarations-and-contracts.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.83 A1 Effective Library, Module, Profile and Scenario Declarations #+LANGUAGE: en #+PROPERTY: JD_ID 10.83 diff --git a/docs/10-19-design/10-architecture/10.84-a2-project-selection-and-capture.org b/docs/10-19-design/10-architecture/10.84-a2-project-selection-and-capture.org index 58c1fb1..e0c948d 100644 --- a/docs/10-19-design/10-architecture/10.84-a2-project-selection-and-capture.org +++ b/docs/10-19-design/10-architecture/10.84-a2-project-selection-and-capture.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.84 A2 Declarative Project Composition, Checked Selection and One Capture #+LANGUAGE: en #+PROPERTY: JD_ID 10.84 diff --git a/docs/10-19-design/10-architecture/10.85-a3-application-projection-and-ascent.org b/docs/10-19-design/10-architecture/10.85-a3-application-projection-and-ascent.org index d33648c..c06873e 100644 --- a/docs/10-19-design/10-architecture/10.85-a3-application-projection-and-ascent.org +++ b/docs/10-19-design/10-architecture/10.85-a3-application-projection-and-ascent.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.85 A3 Application Fact Projection and ASCENT Reasoning #+LANGUAGE: en #+PROPERTY: JD_ID 10.85 diff --git a/docs/10-19-design/10-architecture/10.86-a4-sysml-selection-and-materialization.org b/docs/10-19-design/10-architecture/10.86-a4-sysml-selection-and-materialization.org index 0e077cf..b7045a3 100644 --- a/docs/10-19-design/10-architecture/10.86-a4-sysml-selection-and-materialization.org +++ b/docs/10-19-design/10-architecture/10.86-a4-sysml-selection-and-materialization.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.86 A4 SysML Model Selection, Materialization, Validation and Publication #+LANGUAGE: en #+PROPERTY: JD_ID 10.86 diff --git a/docs/10-19-design/10-architecture/10.87-a5-declarative-slice-joint-acceptance.org b/docs/10-19-design/10-architecture/10.87-a5-declarative-slice-joint-acceptance.org index 2f5b957..c0786d2 100644 --- a/docs/10-19-design/10-architecture/10.87-a5-declarative-slice-joint-acceptance.org +++ b/docs/10-19-design/10-architecture/10.87-a5-declarative-slice-joint-acceptance.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.87 A5 Complete Declarative Slice: Joint Acceptance and Research Plan #+LANGUAGE: en #+PROPERTY: JD_ID 10.87 diff --git a/docs/10-19-design/10-architecture/10.88-declarative-slice-consistency-and-order.org b/docs/10-19-design/10-architecture/10.88-declarative-slice-consistency-and-order.org index 765a089..8fce364 100644 --- a/docs/10-19-design/10-architecture/10.88-declarative-slice-consistency-and-order.org +++ b/docs/10-19-design/10-architecture/10.88-declarative-slice-consistency-and-order.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.88 Declarative Slice Consistency Audit and Implementation Order #+LANGUAGE: en #+PROPERTY: JD_ID 10.88 diff --git a/docs/10-19-design/10-architecture/10.89-i0-source-cohort-dependencies-and-load-boundaries.org b/docs/10-19-design/10-architecture/10.89-i0-source-cohort-dependencies-and-load-boundaries.org index 098b89e..c59ae5c 100644 --- a/docs/10-19-design/10-architecture/10.89-i0-source-cohort-dependencies-and-load-boundaries.org +++ b/docs/10-19-design/10-architecture/10.89-i0-source-cohort-dependencies-and-load-boundaries.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.89 I0 Source Cohort, Dependency Ownership and Build/Load Boundaries #+LANGUAGE: en #+PROPERTY: JD_ID 10.89 diff --git a/docs/10-19-design/10-architecture/10.90-i1-normalized-context-and-scope-handoffs.org b/docs/10-19-design/10-architecture/10.90-i1-normalized-context-and-scope-handoffs.org index 30cd4cb..e54aba7 100644 --- a/docs/10-19-design/10-architecture/10.90-i1-normalized-context-and-scope-handoffs.org +++ b/docs/10-19-design/10-architecture/10.90-i1-normalized-context-and-scope-handoffs.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.90 I1 Normalized Context and Scope Handoffs #+LANGUAGE: en #+PROPERTY: JD_ID 10.90 diff --git a/docs/10-19-design/10-architecture/10.91-i2-library-module-declarations-and-publication.org b/docs/10-19-design/10-architecture/10.91-i2-library-module-declarations-and-publication.org index a69a318..4d7f1ac 100644 --- a/docs/10-19-design/10-architecture/10.91-i2-library-module-declarations-and-publication.org +++ b/docs/10-19-design/10-architecture/10.91-i2-library-module-declarations-and-publication.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.91 I2 Library and Module Declarations, Construction and Publication #+LANGUAGE: en #+PROPERTY: JD_ID 10.91 diff --git a/docs/10-19-design/10-architecture/10.92-i3-project-profile-scenario-and-capture.org b/docs/10-19-design/10-architecture/10.92-i3-project-profile-scenario-and-capture.org index d114db3..03c24de 100644 --- a/docs/10-19-design/10-architecture/10.92-i3-project-profile-scenario-and-capture.org +++ b/docs/10-19-design/10-architecture/10.92-i3-project-profile-scenario-and-capture.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.92 I3 Declarative Project, Profile Selection and Scenario Capture #+LANGUAGE: en #+PROPERTY: JD_ID 10.92 diff --git a/docs/10-19-design/10-architecture/10.93-i4-application-projection-and-accepted-inference-view.org b/docs/10-19-design/10-architecture/10.93-i4-application-projection-and-accepted-inference-view.org index a59b193..048fbf6 100644 --- a/docs/10-19-design/10-architecture/10.93-i4-application-projection-and-accepted-inference-view.org +++ b/docs/10-19-design/10-architecture/10.93-i4-application-projection-and-accepted-inference-view.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.93 I4 Application Projection and Accepted ASCENT Inference View #+LANGUAGE: en #+PROPERTY: JD_ID 10.93 diff --git a/docs/10-19-design/10-architecture/10.94-i5-sysml-selection-materialization-and-validation.org b/docs/10-19-design/10-architecture/10.94-i5-sysml-selection-materialization-and-validation.org index 1fd58c1..43b9668 100644 --- a/docs/10-19-design/10-architecture/10.94-i5-sysml-selection-materialization-and-validation.org +++ b/docs/10-19-design/10-architecture/10.94-i5-sysml-selection-materialization-and-validation.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.94 I5 SysML Selection, Materialization and Validation #+LANGUAGE: en #+PROPERTY: JD_ID 10.94 diff --git a/docs/10-19-design/10-architecture/10.95-i6-joint-acceptance-and-explicit-sysml-publication.org b/docs/10-19-design/10-architecture/10.95-i6-joint-acceptance-and-explicit-sysml-publication.org index 0a0eb09..618251a 100644 --- a/docs/10-19-design/10-architecture/10.95-i6-joint-acceptance-and-explicit-sysml-publication.org +++ b/docs/10-19-design/10-architecture/10.95-i6-joint-acceptance-and-explicit-sysml-publication.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.95 I6 Joint Declarative Slice Acceptance and Explicit SysML Publication #+LANGUAGE: en #+PROPERTY: JD_ID 10.95 diff --git a/docs/10-19-design/10-architecture/10.96-declarative-slice-coherence-and-current-upstream-audit.org b/docs/10-19-design/10-architecture/10.96-declarative-slice-coherence-and-current-upstream-audit.org index 2ef680f..da10d2a 100644 --- a/docs/10-19-design/10-architecture/10.96-declarative-slice-coherence-and-current-upstream-audit.org +++ b/docs/10-19-design/10-architecture/10.96-declarative-slice-coherence-and-current-upstream-audit.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.96 Declarative Slice Coherence and Current Upstream Audit #+LANGUAGE: en #+PROPERTY: JD_ID 10.96 diff --git a/docs/10-19-design/10-architecture/10.97-i0-dependency-load-and-testing-entry-migration.org b/docs/10-19-design/10-architecture/10.97-i0-dependency-load-and-testing-entry-migration.org index 922a855..fcc1176 100644 --- a/docs/10-19-design/10-architecture/10.97-i0-dependency-load-and-testing-entry-migration.org +++ b/docs/10-19-design/10-architecture/10.97-i0-dependency-load-and-testing-entry-migration.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.97 I0 Dependency, Load and Testing Entry Migration #+LANGUAGE: en #+PROPERTY: JD_ID 10.97 diff --git a/docs/10-19-design/10-architecture/10.98-i1-normalized-context-and-scope-retention.org b/docs/10-19-design/10-architecture/10.98-i1-normalized-context-and-scope-retention.org index 5c32d67..2e534b8 100644 --- a/docs/10-19-design/10-architecture/10.98-i1-normalized-context-and-scope-retention.org +++ b/docs/10-19-design/10-architecture/10.98-i1-normalized-context-and-scope-retention.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.98 I1 Normalized Context and Scope Retention #+LANGUAGE: en #+PROPERTY: JD_ID 10.98 diff --git a/docs/10-19-design/10-architecture/10.99-i2-effective-library-module-declarations-and-scope-publication.org b/docs/10-19-design/10-architecture/10.99-i2-effective-library-module-declarations-and-scope-publication.org index 36a954c..5897e5a 100644 --- a/docs/10-19-design/10-architecture/10.99-i2-effective-library-module-declarations-and-scope-publication.org +++ b/docs/10-19-design/10-architecture/10.99-i2-effective-library-module-declarations-and-scope-publication.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 10.99 I2 Effective Library and Module Declarations and Scope Publication #+LANGUAGE: en #+PROPERTY: JD_ID 10.99 diff --git a/docs/20-29-cases/20-gateway/20.01-gateway-sdlc.org b/docs/20-29-cases/20-gateway/20.01-gateway-sdlc.org index 69ca1f9..154fe61 100644 --- a/docs/20-29-cases/20-gateway/20.01-gateway-sdlc.org +++ b/docs/20-29-cases/20-gateway/20.01-gateway-sdlc.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 20.01 Gateway Design and SDLC Walkthrough #+LANGUAGE: en #+PROPERTY: JD_ID 20.01 diff --git a/docs/20-29-cases/20-gateway/20.02-gateway-obligation-ledger.org b/docs/20-29-cases/20-gateway/20.02-gateway-obligation-ledger.org index abe81a5..5eee643 100644 --- a/docs/20-29-cases/20-gateway/20.02-gateway-obligation-ledger.org +++ b/docs/20-29-cases/20-gateway/20.02-gateway-obligation-ledger.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 20.02 Gateway Obligation, Change, and Reuse Ledger #+LANGUAGE: en #+PROPERTY: JD_ID 20.02 diff --git a/docs/20-29-cases/20-gateway/20.03-gateway-design-audit.org b/docs/20-29-cases/20-gateway/20.03-gateway-design-audit.org index 7aaebe6..4f5ac82 100644 --- a/docs/20-29-cases/20-gateway/20.03-gateway-design-audit.org +++ b/docs/20-29-cases/20-gateway/20.03-gateway-design-audit.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 20.03 Gateway Design Audit: Sources, Twenty-Four Variants, and Twelve Gaps #+LANGUAGE: en #+PROPERTY: JD_ID 20.03 diff --git a/docs/20-29-cases/20-gateway/20.04-query-and-change-fixtures.org b/docs/20-29-cases/20-gateway/20.04-query-and-change-fixtures.org index fa222cc..384f4b1 100644 --- a/docs/20-29-cases/20-gateway/20.04-query-and-change-fixtures.org +++ b/docs/20-29-cases/20-gateway/20.04-query-and-change-fixtures.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 20.04 Gateway Query Fixtures and Three Change Walkthroughs #+LANGUAGE: en #+PROPERTY: JD_ID 20.04 diff --git a/docs/20-29-cases/20-gateway/20.05-expanded-admission-controls.org b/docs/20-29-cases/20-gateway/20.05-expanded-admission-controls.org index 4b8b8da..065ed18 100644 --- a/docs/20-29-cases/20-gateway/20.05-expanded-admission-controls.org +++ b/docs/20-29-cases/20-gateway/20.05-expanded-admission-controls.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 20.05 Expanded Claim, Witness and Admission Controls #+LANGUAGE: en #+PROPERTY: JD_ID 20.05 diff --git a/docs/20-29-cases/20-gateway/20.06-oracle-packet-integration.org b/docs/20-29-cases/20-gateway/20.06-oracle-packet-integration.org index 4545091..f5dbecb 100644 --- a/docs/20-29-cases/20-gateway/20.06-oracle-packet-integration.org +++ b/docs/20-29-cases/20-gateway/20.06-oracle-packet-integration.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 20.06 Gateway Oracle Packets in Existing POO and ASCENT Owners #+LANGUAGE: en #+PROPERTY: JD_ID 20.06 diff --git a/docs/20-29-cases/20-gateway/20.07-packet-query-and-history-fixtures.org b/docs/20-29-cases/20-gateway/20.07-packet-query-and-history-fixtures.org index ac20302..6e2db32 100644 --- a/docs/20-29-cases/20-gateway/20.07-packet-query-and-history-fixtures.org +++ b/docs/20-29-cases/20-gateway/20.07-packet-query-and-history-fixtures.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 20.07 Packet Query Fixtures, Snapshot Visibility and Retained Evidence #+LANGUAGE: en #+PROPERTY: JD_ID 20.07 diff --git a/docs/20-29-cases/20-gateway/20.08-qr-identity-and-reuse-controls.org b/docs/20-29-cases/20-gateway/20.08-qr-identity-and-reuse-controls.org index faae5b5..815f019 100644 --- a/docs/20-29-cases/20-gateway/20.08-qr-identity-and-reuse-controls.org +++ b/docs/20-29-cases/20-gateway/20.08-qr-identity-and-reuse-controls.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 20.08 Expanded QR Controls for Identity, Late Intake and Evidence Reuse #+LANGUAGE: en #+PROPERTY: JD_ID 20.08 diff --git a/docs/20-29-cases/20-gateway/20.09-exchange-replay-and-display-trajectories.org b/docs/20-29-cases/20-gateway/20.09-exchange-replay-and-display-trajectories.org index dd6c07f..86f64d6 100644 --- a/docs/20-29-cases/20-gateway/20.09-exchange-replay-and-display-trajectories.org +++ b/docs/20-29-cases/20-gateway/20.09-exchange-replay-and-display-trajectories.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 20.09 Exchange Isolation, Frozen Replay and Display Trajectories #+LANGUAGE: en #+PROPERTY: JD_ID 20.09 diff --git a/docs/20-29-cases/20-gateway/20.10-existing-owner-concurrency-and-delivery.org b/docs/20-29-cases/20-gateway/20.10-existing-owner-concurrency-and-delivery.org index b22c918..f249593 100644 --- a/docs/20-29-cases/20-gateway/20.10-existing-owner-concurrency-and-delivery.org +++ b/docs/20-29-cases/20-gateway/20.10-existing-owner-concurrency-and-delivery.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 20.10 Existing Owners for Capture, Late Replies and Display Confirmation #+LANGUAGE: en #+PROPERTY: JD_ID 20.10 diff --git a/docs/20-29-cases/20-gateway/20.11-expanded-boundary-review-packets.org b/docs/20-29-cases/20-gateway/20.11-expanded-boundary-review-packets.org index 43255f2..d61fdc3 100644 --- a/docs/20-29-cases/20-gateway/20.11-expanded-boundary-review-packets.org +++ b/docs/20-29-cases/20-gateway/20.11-expanded-boundary-review-packets.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 20.11 Expanded C07, R06, D04 and D05 Review Packets #+LANGUAGE: en #+PROPERTY: JD_ID 20.11 diff --git a/docs/20-29-cases/20-gateway/20.12-selected-read-use-race-and-counter-packets.org b/docs/20-29-cases/20-gateway/20.12-selected-read-use-race-and-counter-packets.org index 5a39545..b07890a 100644 --- a/docs/20-29-cases/20-gateway/20.12-selected-read-use-race-and-counter-packets.org +++ b/docs/20-29-cases/20-gateway/20.12-selected-read-use-race-and-counter-packets.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 20.12 Selected Read, Use-Time Race and Late Counter Packets #+LANGUAGE: en #+PROPERTY: JD_ID 20.12 diff --git a/docs/20-29-cases/20-gateway/20.13-binding-confirmation-use-race-and-counter-disposition.org b/docs/20-29-cases/20-gateway/20.13-binding-confirmation-use-race-and-counter-disposition.org index 64735cc..69a61bd 100644 --- a/docs/20-29-cases/20-gateway/20.13-binding-confirmation-use-race-and-counter-disposition.org +++ b/docs/20-29-cases/20-gateway/20.13-binding-confirmation-use-race-and-counter-disposition.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 20.13 Binding Confirmation, Use Race and Counter Disposition #+LANGUAGE: en #+PROPERTY: JD_ID 20.13 diff --git a/docs/20-29-cases/20-gateway/20.14-partial-delivery-consumption-authority-and-blocker-closure.org b/docs/20-29-cases/20-gateway/20.14-partial-delivery-consumption-authority-and-blocker-closure.org index d57b6c7..6e6d5ca 100644 --- a/docs/20-29-cases/20-gateway/20.14-partial-delivery-consumption-authority-and-blocker-closure.org +++ b/docs/20-29-cases/20-gateway/20.14-partial-delivery-consumption-authority-and-blocker-closure.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 20.14 Partial Delivery, Consumption Authority and Blocker Closure #+LANGUAGE: en #+PROPERTY: JD_ID 20.14 diff --git a/docs/20-29-cases/20-gateway/20.15-late-outcome-origin-and-expanded-intake-reuse.org b/docs/20-29-cases/20-gateway/20.15-late-outcome-origin-and-expanded-intake-reuse.org index e373267..b199d15 100644 --- a/docs/20-29-cases/20-gateway/20.15-late-outcome-origin-and-expanded-intake-reuse.org +++ b/docs/20-29-cases/20-gateway/20.15-late-outcome-origin-and-expanded-intake-reuse.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 20.15 Late Outcome Origin and Expanded Intake Reuse #+LANGUAGE: en #+PROPERTY: JD_ID 20.15 diff --git a/docs/20-29-cases/20-gateway/20.16-unknown-order-negative-dependencies-and-defensive-engineering.org b/docs/20-29-cases/20-gateway/20.16-unknown-order-negative-dependencies-and-defensive-engineering.org index b36f2cd..ab5d99d 100644 --- a/docs/20-29-cases/20-gateway/20.16-unknown-order-negative-dependencies-and-defensive-engineering.org +++ b/docs/20-29-cases/20-gateway/20.16-unknown-order-negative-dependencies-and-defensive-engineering.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 20.16 Unknown Order, Negative Dependencies and Defensive Engineering #+LANGUAGE: en #+PROPERTY: JD_ID 20.16 diff --git a/docs/20-29-cases/20-gateway/20.17-sufficient-evidence-and-bounded-revalidation.org b/docs/20-29-cases/20-gateway/20.17-sufficient-evidence-and-bounded-revalidation.org index e2955e4..60fb0ca 100644 --- a/docs/20-29-cases/20-gateway/20.17-sufficient-evidence-and-bounded-revalidation.org +++ b/docs/20-29-cases/20-gateway/20.17-sufficient-evidence-and-bounded-revalidation.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 20.17 Sufficient Evidence and Bounded Revalidation #+LANGUAGE: en #+PROPERTY: JD_ID 20.17 diff --git a/docs/20-29-cases/20-gateway/20.18-policy-required-checks-and-evidence-admission.org b/docs/20-29-cases/20-gateway/20.18-policy-required-checks-and-evidence-admission.org index a1704f2..723f8ad 100644 --- a/docs/20-29-cases/20-gateway/20.18-policy-required-checks-and-evidence-admission.org +++ b/docs/20-29-cases/20-gateway/20.18-policy-required-checks-and-evidence-admission.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 20.18 Policy-Required Checks and Evidence Admission #+LANGUAGE: en #+PROPERTY: JD_ID 20.18 diff --git a/docs/30-39-evaluation/30-benchmarks/30.01-benchmark-design.org b/docs/30-39-evaluation/30-benchmarks/30.01-benchmark-design.org index 3abda12..d52b3ca 100644 --- a/docs/30-39-evaluation/30-benchmarks/30.01-benchmark-design.org +++ b/docs/30-39-evaluation/30-benchmarks/30.01-benchmark-design.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 30.01 Engineering Benchmark and Evaluation Design #+LANGUAGE: en #+PROPERTY: JD_ID 30.01 diff --git a/docs/30-39-evaluation/30-benchmarks/30.02-gateway-minimal-benchmark.org b/docs/30-39-evaluation/30-benchmarks/30.02-gateway-minimal-benchmark.org index 661dc51..c71ad73 100644 --- a/docs/30-39-evaluation/30-benchmarks/30.02-gateway-minimal-benchmark.org +++ b/docs/30-39-evaluation/30-benchmarks/30.02-gateway-minimal-benchmark.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 30.02 Minimal Gateway Benchmark and GAP01-GAP12 Convergence Contract #+LANGUAGE: en #+PROPERTY: JD_ID 30.02 diff --git a/docs/30-39-evaluation/30-benchmarks/30.03-gateway-variant-contracts.org b/docs/30-39-evaluation/30-benchmarks/30.03-gateway-variant-contracts.org index c1ac059..ae2a99e 100644 --- a/docs/30-39-evaluation/30-benchmarks/30.03-gateway-variant-contracts.org +++ b/docs/30-39-evaluation/30-benchmarks/30.03-gateway-variant-contracts.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 30.03 Gateway Benchmark: Twenty-Four Variant Contracts #+LANGUAGE: en #+PROPERTY: JD_ID 30.03 diff --git a/docs/30-39-evaluation/30-benchmarks/30.04-oracle-review-data-contracts.org b/docs/30-39-evaluation/30-benchmarks/30.04-oracle-review-data-contracts.org index 8e377a8..bb1048c 100644 --- a/docs/30-39-evaluation/30-benchmarks/30.04-oracle-review-data-contracts.org +++ b/docs/30-39-evaluation/30-benchmarks/30.04-oracle-review-data-contracts.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 30.04 Framework-Owned Oracle Inputs, Gold and Coverage Contracts #+LANGUAGE: en #+PROPERTY: JD_ID 30.04 diff --git a/docs/40-49-research/40-reference-studies/40.01-specula-reference-study.org b/docs/40-49-research/40-reference-studies/40.01-specula-reference-study.org index f041631..2c18bda 100644 --- a/docs/40-49-research/40-reference-studies/40.01-specula-reference-study.org +++ b/docs/40-49-research/40-reference-studies/40.01-specula-reference-study.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 40.01 Specula References: Local Research Scope and Design Transfers #+LANGUAGE: en #+PROPERTY: JD_ID 40.01 diff --git a/docs/40-49-research/40-reference-studies/40.02-selected-system-and-proof-case.org b/docs/40-49-research/40-reference-studies/40.02-selected-system-and-proof-case.org index f9e2f73..c40ccd9 100644 --- a/docs/40-49-research/40-reference-studies/40.02-selected-system-and-proof-case.org +++ b/docs/40-49-research/40-reference-studies/40.02-selected-system-and-proof-case.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 40.02 Selected System Case and Proof Task: Assets and Semantic Mapping #+LANGUAGE: en #+PROPERTY: JD_ID 40.02 diff --git a/docs/40-49-research/40-reference-studies/40.03-opensysml-implementation-responsibilities.org b/docs/40-49-research/40-reference-studies/40.03-opensysml-implementation-responsibilities.org index b1e3920..0a92b5b 100644 --- a/docs/40-49-research/40-reference-studies/40.03-opensysml-implementation-responsibilities.org +++ b/docs/40-49-research/40-reference-studies/40.03-opensysml-implementation-responsibilities.org @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 40.03 OpenSysML: Implementation Responsibilities and Evidence Boundaries #+LANGUAGE: en #+PROPERTY: JD_ID 40.03 diff --git a/docs/90-99-views/90-architecture-views/90.01-index.org b/docs/90-99-views/90-architecture-views/90.01-index.org index 7d5b972..b9678b6 100644 --- a/docs/90-99-views/90-architecture-views/90.01-index.org +++ b/docs/90-99-views/90-architecture-views/90.01-index.org @@ -1,16 +1,32 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + #+TITLE: 90.01 Paired Org and D2 Architecture Views #+LANGUAGE: en #+PROPERTY: JD_ID 90.01 #+OPTIONS: toc:2 num:nil #+STARTUP: overview #+FILETAGS: :design:diagrams:workflow: -#+PROPERTY: RENDERER d2-v0.9.0 -#+PROPERTY: LAYOUT dagre +#+PROPERTY: RENDERER packages/render (see package.json for dependency pins) +#+PROPERTY: LAYOUT selected in each D2 source #+PROPERTY: THEME 0 #+PROPERTY: PAD 24 [[file:../../../README.org][Overview]] | [[file:../../10-19-design/10-architecture/10.05-agent-reasoning-and-design-convergence.org][Agent/design rationale]] | [[file:../../30-39-evaluation/30-benchmarks/30.03-gateway-variant-contracts.org][24 variant contracts]] +* Current overview and render audit views +- [[file:90.135-library-project-architecture.d2][Repository architecture]] · [[file:90.135-library-project-architecture.svg][SVG]]. Structural responsibilities and dependencies. [[file:90.135-library-project-architecture-sketchbook.svg][Hand-drawn]] / [[file:90.135-library-project-architecture-node-editor.svg][technical-node]] variants share the model. +- [[file:90.02-agent-evidence-loop.d2][Engineering workflow]] · [[file:90.02-agent-evidence-loop.svg][SVG]]. Target integration and current capture stop are explicit. +- [[file:90.129-functional-architecture-rendering.d2][Static render architecture]] · [[file:90.129-functional-architecture-rendering.svg][SVG]]. Project, Library and mature dependency owners. +- [[file:90.130-llm-assisted-model-view-workflow.d2][View authoring workflow]] · [[file:90.130-llm-assisted-model-view-workflow.svg][SVG]]. Static candidate export, without model publication. +- [[file:90.132-library-profile-scenario-architecture-comparison.png][Architecture style comparisons]] · [[file:90.133-capture-preparation-workflow-comparison.png][Workflow style comparisons]]. Actual TS package outputs. + +Earlier design iterations and evidence-oriented views below retain their historical +scope. They are not silently relabeled as current implementation acceptance. + +- [[file:90.136-model-adaptation-boundaries.d2][SDK model adaptation boundaries]] · [[file:90.136-model-adaptation-boundaries.svg][SVG]]. Native SDK semantics and source-bound renderer projection. + * Org and D2 are maintained together :PROPERTIES: :CUSTOM_ID: org-d2-contract @@ -508,3 +524,35 @@ Lean proof, benchmark execution or operational effect is implemented by them. - [[file:90.127-native-package-cohort-and-ci-provenance.d2][90.127 Native package cohort and CI provenance]] - [[file:90.128-native-cohort-source-acquisition.d2][90.128 Native cohort and source acquisition]] + +- [[file:90.129-functional-architecture-rendering.d2][90.129 Functional architecture rendering]] — [[file:90.129-functional-architecture-rendering.svg][SVG]]; owner: [[file:../../10-19-design/10-architecture/10.140-functional-architecture-rendering-and-opensysml.org][10.140]]. + +- [[file:90.130-llm-assisted-model-view-workflow.d2][90.130 Model-to-view authoring workflow]] — [[file:90.130-llm-assisted-model-view-workflow.svg][SVG]]; separate from component architecture; owner: [[file:../../10-19-design/10-architecture/10.140-functional-architecture-rendering-and-opensysml.org][10.140]]. + +- [[file:90.131-library-responsibility-explanation.d2][90.131 Question-led Library responsibilities]] — concise candidate derived from 90.91; [[file:../../10-19-design/10-architecture/10.140-functional-architecture-rendering-and-opensysml.org][TS page composition design]]. + +- [[file:90.132-library-profile-scenario-architecture.d2][90.132 Library / Profile / Scenario architecture]] — [[file:90.132-library-profile-scenario-architecture.html][editable HTML]] · [[file:90.132-library-profile-scenario-architecture.png][PNG]]. Questions and presentation selection live in D2. +- [[file:90.133-capture-preparation-workflow.d2][90.133 Capture preparation workflow]] — [[file:90.133-capture-preparation-workflow.html][editable HTML]] · [[file:90.133-capture-preparation-workflow.png][PNG]]. Separate workflow, current capture-blocked result preserved. + +** Static visual styles and open view organizations +The following are design candidates of the same captured Library/Profile/Scenario +case, not acceptance of C/Q/R. Full figures retain their Questions and source links. +Comparison sheets show the main diagram regions at readable size. + +- [[file:90.132-library-profile-scenario-architecture-comparison.png][Architecture comparison]] — [[file:90.132-library-profile-scenario-architecture-comparison.html][standalone HTML]]. Hand-drawn, node style and dependency matrix. +- [[file:90.133-capture-preparation-workflow-comparison.png][Workflow comparison]] — [[file:90.133-capture-preparation-workflow-comparison.html][standalone HTML]]. Hand-drawn, node style and responsibility swimlane. +- [[file:90.132-library-profile-scenario-architecture-sketchbook.png][Full hand-drawn architecture]] · [[file:90.132-library-profile-scenario-architecture-node-editor.png][Full node-style architecture]] · [[file:90.132-library-profile-scenario-architecture-dependency-matrix.png][Full dependency matrix]]. +- [[file:90.133-capture-preparation-workflow-sketchbook.png][Full hand-drawn Workflow]] · [[file:90.133-capture-preparation-workflow-node-editor.png][Full node-style Workflow]] · [[file:90.133-capture-preparation-workflow-swimlane.png][Full swimlane Workflow]]. + +Upstream themes are independent visual modules; palettes, typography, drawing, +icons and view organization compose separately. Additional domain layouts use +project-owned declarations and pure composers. Model parsing retains official D2 semantics; unsupported notation requires an explicit adapter rather than a raw-render fallback. The static package +uses Rough.js and XYFlow's path utility; it includes no interactive whiteboard. + +- [[file:90.132-library-profile-scenario-architecture-project-owned.png][Project-owned architecture style/icons]] · [[file:90.133-capture-preparation-workflow-project-owned.png][Project-owned workflow style/icons]]. Kind, layout, ordered themes and glyph packs are selected in D2. +- [[file:90.134-render-responsibility-boundaries.d2][90.134 Static renderer responsibility boundaries]] · [[file:90.134-render-responsibility-boundaries.svg][native SVG]]. See [[file:../../10-19-design/10-architecture/10.142-declarative-render-extensibility-audit.org][10.142 audit]]. + +- [[file:90.137-functional-render-composition.d2][90.137 Functional render component dependencies]] · [[file:90.137-functional-render-composition.svg][SVG]]. +- [[file:90.135-library-project-architecture-comfortable.png][Comfortable-density architecture]] · [[file:90.130-llm-assisted-model-view-workflow-sketchbook.png][Hand-drawn authoring Workflow]]. + +- [[file:90.138-library-design-taste-choices.d2][90.138 Design / Taste declarations]] · [[file:90.138-library-design-taste-choices-comparison.png][Three choices with reasons and observations]]. Architecture remains separate from Workflow. diff --git a/docs/90-99-views/90-architecture-views/90.02-agent-evidence-loop.d2 b/docs/90-99-views/90-architecture-views/90.02-agent-evidence-loop.d2 index 98129de..7e9a6ef 100644 --- a/docs/90-99-views/90-architecture-views/90.02-agent-evidence-loop.d2 +++ b/docs/90-99-views/90-architecture-views/90.02-agent-evidence-loop.d2 @@ -1,25 +1,149 @@ -# org-target: docs/10-19-design/10-architecture/10.05-agent-reasoning-and-design-convergence.org::#agent-design-purpose -# Relationship graph: no edge prescribes the Agent's next action. -direction: down -classes: { - knowledge: {style: {fill: "#EAF2FF"; stroke: "#315B8A"; font-size: 17; border-radius: 12}} - open: {style: {fill: "#E6F5F3"; stroke: "#19756C"; font-size: 17; border-radius: 12}} - boundary: {style: {fill: "#FFF2DD"; stroke: "#9B6C25"; font-size: 17; border-radius: 12}} +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + +# Current authored view; arrows mean the relation explicitly written on each edge. +vars: {d2-config: {layout-engine: elk; pad: 24; data: {figure: |json +{ + "title": "Question-led engineering workflow and current capture boundary", + "purpose": "workflow", + "kind": "engineering-lifecycle", + "language": "en", + "width": 1120, + "primary": "scope", + "questions": [ + { + "ref": "scope", + "text": "How do confirmed ideas reach checked models and review without promoting candidates to evidence?", + "focusRefs": [ + "source" + ] + } + ], + "references": { + "source": "docs/90-99-views/90-architecture-views/90.02-agent-evidence-loop.d2" + }, + "basis": { + "captureRef": "design-candidate:current-readme", + "modelRefs": [ + "project.sysml" + ], + "obligationRefs": [ + "docs/10-19-design/10-architecture/10.142-declarative-render-extensibility-audit.org" + ], + "evidenceRefs": [] + }, + "copy": { + "status": "Design candidate \u00b7 current source associations retained \u00b7 no C/Q/R issued", + "description": "Current preparation is blocked. Target integration requires a separately qualified capture." + }, + "themes": [ + "sketchbook", + "compact" + ], + "icons": [ + "engineering" + ], + "presentation": { + "scenes": [ + { + "heading": "preparation", + "graph": { + "id": "90.02-agent-evidence-loop-scene-1", + "children": [ + { + "id": "preparation.intent" + }, + { + "id": "preparation.selection" + }, + { + "id": "preparation.scenario" + }, + { + "id": "preparation.stop" + } + ], + "layoutOptions": { + "elk.algorithm": "layered", + "elk.direction": "RIGHT", + "elk.edgeRouting": "ORTHOGONAL", + "elk.spacing.nodeNode": "40", + "elk.layered.spacing.nodeNodeBetweenLayers": "52", + "elk.layered.considerModelOrder.strategy": "NODES_AND_EDGES" + } + }, + "icons": { + "preparation.intent": "question", + "preparation.selection": "selection", + "preparation.scenario": "capture", + "preparation.stop": "pending" + }, + "roles": { + "preparation.stop": "pending" + } + }, + { + "heading": "integration", + "graph": { + "id": "90.02-agent-evidence-loop-scene-2", + "children": [ + { + "id": "integration.capture" + }, + { + "id": "integration.methods" + }, + { + "id": "integration.inference" + }, + { + "id": "integration.review" + } + ], + "layoutOptions": { + "elk.algorithm": "layered", + "elk.direction": "RIGHT", + "elk.edgeRouting": "ORTHOGONAL", + "elk.spacing.nodeNode": "40", + "elk.layered.spacing.nodeNodeBetweenLayers": "52", + "elk.layered.considerModelOrder.strategy": "NODES_AND_EDGES" + } + }, + "icons": { + "integration.capture": "capture", + "integration.methods": "obligation", + "integration.inference": "model", + "integration.review": "evidence" + }, + "roles": { + "integration.capture": "pending", + "integration.methods": "pending", + "integration.inference": "pending", + "integration.review": "pending" + } + } + ] + } } -agent: "LLM-based AI agent\nEngineering reasoning\nQuestions, alternatives, new hypotheses" {class: open} -library: "POO design Library\nDomains, contracts, extensible knowledge" {class: knowledge} -ascent: "ASCENT\nEvidence Chain + DAG + Trajectory" {class: knowledge} -view: "Progressive evidence view\nSupport, counterevidence, unknowns\nCurrent references and deeper reads" {class: open} -experiments: "LLM-based AI agent investigation\nSource inspection, QNT, Lean, experiments" {class: open} -observations: "Bound observations\nPremises, source, result, scope" {class: knowledge} -aitia: "Aitia / Host boundary\nScoped admission, authorization, effects" {class: boundary} -library -> ascent: "domain facts and associations" -agent -> ascent: "caller-selected questions and scope" -ascent -> view: "current truthful evidence" -view -> agent: "inform; do not rank or choose" -agent -> experiments: "choose, revise, or invent" -experiments -> observations: "record results and failures" -observations -> ascent: "checked support and changed premises" -ascent -> aitia: "references with explicit scope" -aitia -> observations: "actual execution / operational feedback" -agent -> library: "propose reviewed extensions" {style.stroke-dash: 4} +| +}}} +preparation: Current preparation { + intent: "Confirmed idea / Questions\nOriginal source and role scope" + selection: "Library / Profile\nModels, policies and methods" + scenario: "Scenario preparation\nActual inputs and observations" + stop: "Current DE-CASE-01\ncapture-blocked / capture = #f" + intent -> selection: select + selection -> scenario: bind + scenario -> stop: current return +} +integration: Target integration after qualified capture { + capture: "Qualified C\nRequired integration gate" + methods: "Selected methods\nBound results and findings" + inference: "ASCENT query view\nSupport / counters / gaps" + review: "Independent Aitia review\nPolicy / revision / roles" + capture -> methods: same inputs + methods -> inference: explicit facts + inference -> review: context, not authority +} +preparation.scenario -> integration.capture: after qualification diff --git a/docs/90-99-views/90-architecture-views/90.02-agent-evidence-loop.json b/docs/90-99-views/90-architecture-views/90.02-agent-evidence-loop.json new file mode 100644 index 0000000..9da46ce --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.02-agent-evidence-loop.json @@ -0,0 +1,204 @@ +{ + "attribution": { + "copyright": [ + "2026 hardenedlinux Linux Team and Contributors", + "2014 Indian Type Foundry (info@indiantypefoundry.com)" + ], + "license": "LGPL-2.1-or-later AND OFL-1.1" + }, + "observation": { + "canvas": { + "x": 0, + "y": 0, + "width": 1120, + "height": 503.9375 + }, + "subjects": [ + { + "id": "preparation.intent", + "role": "default", + "x": 35.21562576293945, + "y": 205.1160430908203, + "width": 198.25686645507812, + "height": 61.09877014160156 + }, + { + "id": "preparation.selection", + "role": "default", + "x": 334.58563232421875, + "y": 205.39382934570312, + "width": 170.9007568359375, + "height": 60.91204833984375 + }, + { + "id": "preparation.scenario", + "role": "default", + "x": 598.8497924804688, + "y": 205.5230255126953, + "width": 175.03509521484375, + "height": 59.70207214355469 + }, + { + "id": "preparation.stop", + "role": "pending", + "x": 905.2330932617188, + "y": 205.28221130371094, + "width": 179.76544189453125, + "height": 60.01582336425781 + }, + { + "id": "integration.capture", + "role": "pending", + "x": 35.54515075683594, + "y": 360.82806396484375, + "width": 148.9542694091797, + "height": 59.147674560546875 + }, + { + "id": "integration.methods", + "role": "pending", + "x": 307.48614501953125, + "y": 360.60797119140625, + "width": 155.28182983398438, + "height": 59.2203369140625 + }, + { + "id": "integration.inference", + "role": "pending", + "x": 587.5949096679688, + "y": 360.5668029785156, + "width": 153.77996826171875, + "height": 59.002899169921875 + }, + { + "id": "integration.review", + "role": "pending", + "x": 899.3352661132812, + "y": 361.07061767578125, + "width": 185.61590576171875, + "height": 58.65802001953125 + } + ], + "relations": [ + "preparation.(intent -> selection)[0]", + "preparation.(selection -> scenario)[0]", + "preparation.(scenario -> stop)[0]", + "integration.(capture -> methods)[0]", + "integration.(methods -> inference)[0]", + "integration.(inference -> review)[0]" + ], + "headings": [ + { + "role": "title", + "x": 20, + "y": 20, + "width": 1080, + "height": 48 + }, + { + "role": "question", + "x": 20, + "y": 68, + "width": 1080, + "height": 34 + }, + { + "role": "note", + "x": 20, + "y": 102, + "width": 1080, + "height": 27 + }, + { + "role": "heading", + "x": 20, + "y": 159, + "width": 1080, + "height": 31 + }, + { + "role": "heading", + "x": 20, + "y": 314.59375, + "width": 1080, + "height": 31 + }, + { + "role": "note", + "x": 20, + "y": 456.9375, + "width": 1080, + "height": 27 + } + ] + }, + "canvas": { + "background": "rgb(250, 247, 238)", + "transparent": false + }, + "readability": { + "minimumTextSize": 8.441929133858268, + "samples": 29 + }, + "inputSHA256": "fc4620385b64d1a775420eadf9121bd12249f68cfc5dbbdca664517bb6539174", + "scenes": [ + { + "inputSHA256": "fb58b4a310c5b241ffbc144cdfe7b0dd250ad70f1aaf5fd9e046b0e4a80da480", + "layoutSHA256": "a795b309fcd3e89b32c7edc7a9d1180e94b20d3a52e05b6863d56821371dd190", + "nodes": 4, + "edges": 3, + "milliseconds": 143.25470800000016 + }, + { + "inputSHA256": "272692e67be27556a633e2e664709ef9af42dce0dbf9b605601e11e06edc8661", + "layoutSHA256": "85c89fbff7aed9d9f678a21f5f8cd3ab0469ed826cd765e1ea661aee92570cf8", + "nodes": 4, + "edges": 3, + "milliseconds": 11.155541999999969 + } + ], + "svgSHA256": [ + "508066c5a88852fefba66f6d5352b35aab7feaff8ae9fdc9c78613ab67fe7763", + "83786d64694eb42c92f45218b300408dd228bd13ced497590278c0bdecdfa030", + "c487f332156dc8029308a5192161ec033a03c3daa0529ab54250add8c1032b13" + ], + "composedHTMLSHA256": "2f561fc4d29ec60e2fcccfce556dd65263e82bef1cc94177aa74351a32d7e203", + "dependencies": { + "@fontsource/inter": "5.3.0", + "@fontsource/kalam": "5.3.0", + "@terrastruct/d2": "0.1.33", + "@xyflow/system": "0.0.83", + "elkjs": "0.12.1", + "parse5": "8.0.1", + "roughjs": "4.6.6", + "valibot": "1.2.0", + "web-worker": "1.5.0" + }, + "regionSHA256": {}, + "htmlSHA256": "fdbf01eb61cedadb665457482b3d6d9c0bf76566ad7cd562aacc11cd444dd362", + "drawing": "roughjs@4.6.6", + "routing": "elkjs@0.12.1", + "assetSHA256": { + "@fontsource/kalam/files/kalam-latin-400-normal.woff2": "954410601a823f37e219f7930b7446f86afa15621326a7078d56fb9c910135cb", + "@fontsource/kalam/files/kalam-latin-700-normal.woff2": "252063af6ade8b9a744cde4ddad0fc21ea53b8ba711eed121a0c2e8610ea9c93" + }, + "pngSHA256": "fa5f223e066a896fd7bf5d22e620575fd189ff058a2a12abca4db99927d74b3a", + "browser": "156.0.8078.4", + "width": 1680, + "height": 756, + "scale": 1.5, + "bounds": { + "workflow": { + "x": 20, + "y": 20, + "width": 1080, + "height": 463.9375 + } + }, + "sources": { + "docs/90-99-views/90-architecture-views/90.02-agent-evidence-loop.d2": "e4cb287b251801b8de38bf08d0636431b166ee793f989e5b9d7ffd52d054e178", + "packages/render/examples/attribution.ts": "58f7914284a69c4ce42db61ec24c06cf9194232ed3402fc7ae12e3ded4187892", + "packages/render/examples/overview-composition.ts": "d0a4ff5da59577b7dcb6b952e4f7ad3424f23f226e4af8f15c223ed53efcec93", + "packages/render/examples/overviews.ts": "e385215fc31d9d2945c06d7df9f66f700e7e980f71154c99225c2db03e4e093f" + } +} \ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.02-agent-evidence-loop.json.license b/docs/90-99-views/90-architecture-views/90.02-agent-evidence-loop.json.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.02-agent-evidence-loop.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.02-agent-evidence-loop.png b/docs/90-99-views/90-architecture-views/90.02-agent-evidence-loop.png new file mode 100644 index 0000000..cbffd58 Binary files /dev/null and b/docs/90-99-views/90-architecture-views/90.02-agent-evidence-loop.png differ diff --git a/docs/90-99-views/90-architecture-views/90.02-agent-evidence-loop.png.license b/docs/90-99-views/90-architecture-views/90.02-agent-evidence-loop.png.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.02-agent-evidence-loop.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.02-agent-evidence-loop.svg b/docs/90-99-views/90-architecture-views/90.02-agent-evidence-loop.svg index f65697b..f54caac 100644 --- a/docs/90-99-views/90-architecture-views/90.02-agent-evidence-loop.svg +++ b/docs/90-99-views/90-architecture-views/90.02-agent-evidence-loop.svg @@ -1,46 +1,59 @@ -LLM-based AI agentEngineering reasoningQuestions, alternatives, new hypothesesPOO design LibraryDomains, contracts, extensible knowledgeASCENTEvidence Chain + DAG + TrajectoryProgressive evidence viewSupport, counterevidence, unknownsCurrent references and deeper readsLLM-based AI agent investigationSource inspection, QNT, Lean, experimentsBound observationsPremises, source, result, scopeAitia / Host boundaryScoped admission, authorization, effects domain facts and associationscaller-selected questions and scopecurrent truthful evidenceinform; do not rank or choosechoose, revise, or inventrecord results and failureschecked support and changed premisesreferences with explicit scopeactual execution / operational feedback propose reviewed extensions - - - - - - - - - - - - + +{"renderer":{"package":"@deterministic-engineering/render","version":"1.0.0","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":{"scenes":[{"heading":"preparation","graph":{"id":"90.02-agent-evidence-loop-scene-1","children":[{"id":"preparation.intent"},{"id":"preparation.selection"},{"id":"preparation.scenario"},{"id":"preparation.stop"}],"layoutOptions":{"elk.algorithm":"layered","elk.direction":"RIGHT","elk.edgeRouting":"ORTHOGONAL","elk.spacing.nodeNode":"40","elk.layered.spacing.nodeNodeBetweenLayers":"52","elk.layered.considerModelOrder.strategy":"NODES_AND_EDGES"}},"icons":{"preparation.intent":"question","preparation.selection":"selection","preparation.scenario":"capture","preparation.stop":"pending"},"roles":{"preparation.stop":"pending"}},{"heading":"integration","graph":{"id":"90.02-agent-evidence-loop-scene-2","children":[{"id":"integration.capture"},{"id":"integration.methods"},{"id":"integration.inference"},{"id":"integration.review"}],"layoutOptions":{"elk.algorithm":"layered","elk.direction":"RIGHT","elk.edgeRouting":"ORTHOGONAL","elk.spacing.nodeNode":"40","elk.layered.spacing.nodeNodeBetweenLayers":"52","elk.layered.considerModelOrder.strategy":"NODES_AND_EDGES"}},"icons":{"integration.capture":"capture","integration.methods":"obligation","integration.inference":"model","integration.review":"evidence"},"roles":{"integration.capture":"pending","integration.methods":"pending","integration.inference":"pending","integration.review":"pending"}}]},"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":"fc4620385b64d1a775420eadf9121bd12249f68cfc5dbbdca664517bb6539174","model":{"subjects":[{"id":"preparation","type":"rectangle","level":1,"label":"Current preparation"},{"id":"preparation.intent","type":"rectangle","level":2,"label":"Confirmed idea / Questions\nOriginal source and role scope"},{"id":"preparation.selection","type":"rectangle","level":2,"label":"Library / Profile\nModels, policies and methods"},{"id":"preparation.scenario","type":"rectangle","level":2,"label":"Scenario preparation\nActual inputs and observations"},{"id":"preparation.stop","type":"rectangle","level":2,"label":"Current DE-CASE-01\ncapture-blocked / capture = #f"},{"id":"integration","type":"rectangle","level":1,"label":"Target integration after qualified capture"},{"id":"integration.capture","type":"rectangle","level":2,"label":"Qualified C\nRequired integration gate"},{"id":"integration.methods","type":"rectangle","level":2,"label":"Selected methods\nBound results and findings"},{"id":"integration.inference","type":"rectangle","level":2,"label":"ASCENT query view\nSupport / counters / gaps"},{"id":"integration.review","type":"rectangle","level":2,"label":"Independent Aitia review\nPolicy / revision / roles"}],"relations":[{"id":"preparation.(intent -> selection)[0]","src":"preparation.intent","dst":"preparation.selection","label":"select","srcArrow":"none","dstArrow":"triangle"},{"id":"preparation.(selection -> scenario)[0]","src":"preparation.selection","dst":"preparation.scenario","label":"bind","srcArrow":"none","dstArrow":"triangle"},{"id":"preparation.(scenario -> stop)[0]","src":"preparation.scenario","dst":"preparation.stop","label":"current return","srcArrow":"none","dstArrow":"triangle"},{"id":"integration.(capture -> methods)[0]","src":"integration.capture","dst":"integration.methods","label":"same inputs","srcArrow":"none","dstArrow":"triangle"},{"id":"integration.(methods -> inference)[0]","src":"integration.methods","dst":"integration.inference","label":"explicit facts","srcArrow":"none","dstArrow":"triangle"},{"id":"integration.(inference -> review)[0]","src":"integration.inference","dst":"integration.review","label":"context, not authority","srcArrow":"none","dstArrow":"triangle"},{"id":"(preparation.scenario -> integration.capture)[0]","src":"preparation.scenario","dst":"integration.capture","label":"after qualification","srcArrow":"none","dstArrow":"triangle"}]},"view":{"source":"docs/90-99-views/90-architecture-views/90.02-agent-evidence-loop.d2","title":"Question-led engineering workflow and current capture boundary","purpose":"workflow","kind":"engineering-lifecycle","question":{"ref":"scope","text":"How do confirmed ideas reach checked models and review without promoting candidates to evidence?","focusRefs":["source"]},"basis":{"captureRef":"design-candidate:current-readme","modelRefs":["project.sysml"],"obligationRefs":["docs/10-19-design/10-architecture/10.142-declarative-render-extensibility-audit.org"],"evidenceRefs":[]}},"questions":[{"ref":"scope","text":"How do confirmed ideas reach checked models and review without promoting candidates to evidence?","focusRefs":["source"]}],"references":{"source":"docs/90-99-views/90-architecture-views/90.02-agent-evidence-loop.d2"},"sourceSHA256":{"docs/90-99-views/90-architecture-views/90.02-agent-evidence-loop.d2":"e4cb287b251801b8de38bf08d0636431b166ee793f989e5b9d7ffd52d054e178","packages/render/examples/attribution.ts":"58f7914284a69c4ce42db61ec24c06cf9194232ed3402fc7ae12e3ded4187892","packages/render/examples/overview-composition.ts":"d0a4ff5da59577b7dcb6b952e4f7ad3424f23f226e4af8f15c223ed53efcec93","packages/render/examples/overviews.ts":"e385215fc31d9d2945c06d7df9f66f700e7e980f71154c99225c2db03e4e093f"},"rendered":{"observation":{"canvas":{"x":0,"y":0,"width":1120,"height":503.9375},"subjects":[{"id":"preparation.intent","role":"default","x":35.21562576293945,"y":205.1160430908203,"width":198.25686645507812,"height":61.09877014160156},{"id":"preparation.selection","role":"default","x":334.58563232421875,"y":205.39382934570312,"width":170.9007568359375,"height":60.91204833984375},{"id":"preparation.scenario","role":"default","x":598.8497924804688,"y":205.5230255126953,"width":175.03509521484375,"height":59.70207214355469},{"id":"preparation.stop","role":"pending","x":905.2330932617188,"y":205.28221130371094,"width":179.76544189453125,"height":60.01582336425781},{"id":"integration.capture","role":"pending","x":35.54515075683594,"y":360.82806396484375,"width":148.9542694091797,"height":59.147674560546875},{"id":"integration.methods","role":"pending","x":307.48614501953125,"y":360.60797119140625,"width":155.28182983398438,"height":59.2203369140625},{"id":"integration.inference","role":"pending","x":587.5949096679688,"y":360.5668029785156,"width":153.77996826171875,"height":59.002899169921875},{"id":"integration.review","role":"pending","x":899.3352661132812,"y":361.07061767578125,"width":185.61590576171875,"height":58.65802001953125}],"relations":["preparation.(intent -> selection)[0]","preparation.(selection -> scenario)[0]","preparation.(scenario -> stop)[0]","integration.(capture -> methods)[0]","integration.(methods -> inference)[0]","integration.(inference -> review)[0]"],"headings":[{"role":"title","x":20,"y":20,"width":1080,"height":48},{"role":"question","x":20,"y":68,"width":1080,"height":34},{"role":"note","x":20,"y":102,"width":1080,"height":27},{"role":"heading","x":20,"y":159,"width":1080,"height":31},{"role":"heading","x":20,"y":314.59375,"width":1080,"height":31},{"role":"note","x":20,"y":456.9375,"width":1080,"height":27}]},"readability":{"minimumTextSize":8.441929133858268,"samples":29},"bounds":{"workflow":{"x":20,"y":20,"width":1080,"height":463.9375}}}}Question-led engineering workflow and current capture boundary?How do confirmed ideas reach checked models and review without promoting candidates to evidence?Current preparation is blocked. Target integration requires a separately qualified capture.Current preparation{"graph":{"id":"90.02-agent-evidence-loop-scene-1","children":[{"id":"preparation.intent"},{"id":"preparation.selection"},{"id":"preparation.scenario"},{"id":"preparation.stop"}],"layoutOptions":{"elk.spacing.nodeNode":"40","elk.layered.spacing.nodeNodeBetweenLayers":"52","elk.algorithm":"layered","elk.direction":"RIGHT","elk.edgeRouting":"ORTHOGONAL","elk.layered.considerModelOrder.strategy":"NODES_AND_EDGES"},"edges":[{"id":"preparation.(intent -> selection)[0]","sources":["preparation.intent"],"targets":["preparation.selection"]},{"id":"preparation.(selection -> scenario)[0]","sources":["preparation.selection"],"targets":["preparation.scenario"]},{"id":"preparation.(scenario -> stop)[0]","sources":["preparation.scenario"],"targets":["preparation.stop"]}]},"marker":"arrow-0a4c3850fbf8"}selectbindcurrent returnConfirmed idea / QuestionsOriginal source and role scopeLibrary / ProfileModels, policies and methodsScenario preparationActual inputs and observationsCurrent DE-CASE-01capture-blocked / capture = #fTarget integration after qualified capture{"graph":{"id":"90.02-agent-evidence-loop-scene-2","children":[{"id":"integration.capture"},{"id":"integration.methods"},{"id":"integration.inference"},{"id":"integration.review"}],"layoutOptions":{"elk.spacing.nodeNode":"40","elk.layered.spacing.nodeNodeBetweenLayers":"52","elk.algorithm":"layered","elk.direction":"RIGHT","elk.edgeRouting":"ORTHOGONAL","elk.layered.considerModelOrder.strategy":"NODES_AND_EDGES"},"edges":[{"id":"integration.(capture -> methods)[0]","sources":["integration.capture"],"targets":["integration.methods"]},{"id":"integration.(methods -> inference)[0]","sources":["integration.methods"],"targets":["integration.inference"]},{"id":"integration.(inference -> review)[0]","sources":["integration.inference"],"targets":["integration.review"]}]},"marker":"arrow-2c3d280ad937"}same inputsexplicit factscontext, not authorityQualified CRequired integration gateSelected methodsBound results and findingsASCENT query viewSupport / counters / gapsIndependent Aitia reviewPolicy / revision / rolesDesign candidate · current source associations retained · no C/Q/R issued \ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.03-domain-evidence-graph.d2 b/docs/90-99-views/90-architecture-views/90.03-domain-evidence-graph.d2 index 528b3d0..767dc34 100644 --- a/docs/90-99-views/90-architecture-views/90.03-domain-evidence-graph.d2 +++ b/docs/90-99-views/90-architecture-views/90.03-domain-evidence-graph.d2 @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + # org-target: docs/10-19-design/10-architecture/10.05-agent-reasoning-and-design-convergence.org::#existing-mechanisms direction: down classes: { diff --git a/docs/90-99-views/90-architecture-views/90.03-domain-evidence-graph.svg b/docs/90-99-views/90-architecture-views/90.03-domain-evidence-graph.svg index 002260b..3e85f6e 100644 --- a/docs/90-99-views/90-architecture-views/90.03-domain-evidence-graph.svg +++ b/docs/90-99-views/90-architecture-views/90.03-domain-evidence-graph.svg @@ -1,4 +1,11 @@ -LibraryPublished contractsProfileSelected configurationScenarioOne captured useProject-owned contentArchitecture modelOrg documentsDecision records selects published contractsbinds selectioncaptures model referencescaptures document closurecaptures decision context + + + + + + +2Three responsibilities / no duplicated ownershipLibraryDESIGNPublish onceModels · methods · policies ·obligationsSelectionDESIGNSelect explicitlyStage · viewpoints · required contractsCaptureDESIGNCapture one useArchitecture · Org · decisions · sources3Model / obligations / evidenceArchitecture modelModel references1 linkedObligationObligation references1 linkedPendingEvidence referencesnone linked / pendingDesign candidate derived from 90.91 / 10.31. Evidence and independent review remain open.SOURCE 23c889168a078687 / DESIGN CLAIMS / ARCHITECTURE \ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-comparison.html b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-comparison.html new file mode 100644 index 0000000..47cdae0 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-comparison.html @@ -0,0 +1,6 @@ + + +

Library / Profile / Scenario architecture

sketchbook

architecture-sketchbook

node-editor

architecture-node-editor

dependency-matrix

architecture-dependency-matrix

project-owned

architecture-project-owned
\ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-comparison.png b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-comparison.png new file mode 100644 index 0000000..232234a Binary files /dev/null and b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-comparison.png differ diff --git a/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-comparison.png.license b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-comparison.png.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-comparison.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-dependency-matrix-detail.png b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-dependency-matrix-detail.png new file mode 100644 index 0000000..13f1e63 Binary files /dev/null and b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-dependency-matrix-detail.png differ diff --git a/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-dependency-matrix-detail.png.license b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-dependency-matrix-detail.png.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-dependency-matrix-detail.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-dependency-matrix.html b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-dependency-matrix.html new file mode 100644 index 0000000..921343d --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-dependency-matrix.html @@ -0,0 +1,39 @@ + + +Library / Profile / Scenario architecture
+
Repository case / design view
DETERMINISTIC ENGINEERING / DE-CASE-01

One Library. Clear boundaries.

Shared definitions. Independent choices. Traceable project use.

+

1What does this Library make possible?

+

Publish once

Models, methods and policies
Reusable definitions from Library

+

Choose per project

Profile selects the needed capabilities
Original identities stay intact

+

Bind actual use

Scenario acquires project inputs
One use, with source associations

+

2Who publishes, selects and binds?Ownership / arrows point to dependencies

+
LibraryProfileScenario
Library———
Profileselects——
Scenarioreferences definitionsbinds—
+
Model: project.sysml / a scoped responsibility viewASCENT reasoning and Aitia review retain separate owners
+

3Which responsibilities stay independent?

+

One definition owner

Selection and use reference definitions
Contract bodies are not copied

Selection keeps its scope

Retain parents and both policies
Bind actual published methods

Reuse existing admission

POO / Core own admission
Keep normalized return values

Keep review independent

Candidates, evidence and authority
Retain each source association

+

4How do models, docs and decisions connect?

Architecture modelproject.sysml / actual and target
Org design basisContracts, duties and acceptance
Decisions and reassessmentChoices, assumptions and triggers
Design view: issued C, accepted Q and independent review still need actual binding.
+

What does the current source show?

Library / Profile declarations are visible
Objects, both policies, catalog / mapping and method selection
SDK identities and source bindings are retained
Exact IDs, parents and port references; original input fingerprints

What is still blocked?

capture-blocked · capture = #f
Preparation still reports origin and method-footprint gaps
No review or delivery was executed here
Source observation and image export are not execution receipts
+
Library publishes meaning. Profile selects. Scenario binds this use.
Questions / model / source observations / architectureSource observations / explicit projection limits / no verification-pass claim
\ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-dependency-matrix.json b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-dependency-matrix.json new file mode 100644 index 0000000..0ad3266 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-dependency-matrix.json @@ -0,0 +1,221 @@ +{ + "status": "design explanation / source observations only", + "attribution": { + "copyright": [ + "2026 hardenedlinux Linux Team and Contributors", + "2016 The Inter Project Authors (https://github.com/rsms/inter)" + ], + "license": "LGPL-2.1-or-later AND OFL-1.1" + }, + "observation": { + "canvas": { + "x": 0, + "y": 0, + "width": 1120, + "height": 1427.75 + }, + "subjects": [], + "relations": [], + "headings": [] + }, + "canvas": { + "background": "rgba(0, 0, 0, 0)", + "transparent": false + }, + "readability": { + "minimumTextSize": null, + "samples": 0 + }, + "inputSHA256": "e4327cbfe066fe24037b28b380be38d262780293913fe9018e26528594a44fc7", + "scenes": [], + "svgSHA256": [], + "composedHTMLSHA256": "19a422ba1457103df81c03e447eed95d707fb8e07087e05fc7423b8416326d14", + "dependencies": { + "@fontsource/inter": "5.3.0", + "@fontsource/kalam": "5.3.0", + "@terrastruct/d2": "0.1.33", + "@xyflow/system": "0.0.83", + "elkjs": "0.12.1", + "parse5": "8.0.1", + "roughjs": "4.6.6", + "valibot": "1.2.0", + "web-worker": "1.5.0" + }, + "regionSHA256": { + "architecture": "0cc1215288de043bfdc2c7234a00da255b3c43c6dd55e4e6a595415b69d5908a" + }, + "htmlSHA256": "a7fadf62e1ba0a3c5b80cc2083f391a9f1a56c48a56e3806ddb244efc823ad87", + "drawing": "precise", + "routing": "none", + "assetSHA256": { + "@fontsource/inter/files/inter-latin-700-normal.woff2": "6f56409fd3d64bb85f7d070bce20749db2d66b6d63cec586cc22d1c761be2491", + "@fontsource/inter/files/inter-latin-400-normal.woff2": "8909904ab6c872eb994093482a88a28eca2cd95912d7b6fecd72103b0dc07edc" + }, + "pngSHA256": "2f44c7be70bfb75aa09d3934affca15b52454bad2947f5d8fb64b845d4ed19b4", + "browser": "156.0.8078.4", + "width": 2240, + "height": 2856, + "scale": 2, + "bounds": { + "header": { + "x": 20, + "y": 20, + "width": 1080, + "height": 136.578125 + }, + "purpose": { + "x": 20, + "y": 156.578125, + "width": 1080, + "height": 209 + }, + "architecture": { + "x": 20, + "y": 377.578125, + "width": 1080, + "height": 321 + }, + "principles": { + "x": 20, + "y": 710.578125, + "width": 1080, + "height": 215.171875 + }, + "products": { + "x": 20, + "y": 937.75, + "width": 1080, + "height": 172 + }, + "evidence": { + "x": 20, + "y": 1121.75, + "width": 1080, + "height": 194 + }, + "takeaway": { + "x": 20, + "y": 1315.75, + "width": 1080, + "height": 68 + } + }, + "sources": { + "docs/10-19-design/10-architecture/10.31-architecture-document-and-decision-contracts.org": "ce28501daff4fe5eaefc763f545645c2fe695a3354bcdde52a3645d827e71156", + "docs/10-19-design/10-architecture/10.34-case-design-review-dossier-draft.org": "3e3f75c8c3fe8565015607cbb4c131c231fa83f076588fdcc43527e5909b1981", + "docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture.d2": "865851b9efa36c9ddadd9d4e5284b4214564d6f57e3e6e85930709a92f7a96fc", + "docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow.d2": "44c4adf2ef884d207c201cb2a1f52dbf0d0eaa3dd3b27450c938f9a54a614e29", + "library/project-organization/objects.ss": "f660d3d90a55a9d7deff8782194dbdc952e85ecfd52463577e8ab1be9905a6b6", + "packages/render/examples/attribution.ts": "58f7914284a69c4ce42db61ec24c06cf9194232ed3402fc7ae12e3ded4187892", + "packages/render/examples/comparison.ts": "3a5f476766cd2873a83cf7664f9f724f99dcf3179d4122e8f05b28c615c6d49c", + "packages/render/examples/library-case.ts": "48c17b7230017b84a6c08db2de031e5c9bc01512a6f59f59abe306640cc0354f", + "packages/render/examples/library-case/architecture-diagram.ts": "fd588a69bb8d415b76fbefc8643cf1ebf3527b6a5eeb2bb20d32bdda5dcc6cbe", + "packages/render/examples/library-case/architecture.ts": "311b3bed75d08c8fd57284feb32f29bd1454585ec4a6a50b8d8e6953cb994c9f", + "packages/render/examples/library-case/dependency-matrix.ts": "aa0227233fa920da8675dd357ad89fef090bc9222434343e0cb974d5a8705848", + "packages/render/examples/library-case/resources.ts": "5c0520c8c1c8017c5031870908406bb1ab2d01ac5a64bab01e0563b2bebe7082", + "packages/render/examples/library-case/style.ts": "879edbe4083a27f2e47af394fe76e190d474028db35a6f97e56853bff3f3c371", + "packages/render/examples/library-case/workflow-declaration.ts": "9ce3f5c5aa4082c0bf5bb863491b14acadb9d10aa10de9e95c039b2f8a87261e", + "packages/render/examples/library-case/workflow-diagram.ts": "a772701acb40b752a5498927d8d9cc59bbd14dc08c04f096fe06b21dd0044dcc", + "packages/render/examples/library-case/workflow.ts": "2e442c8dd33e130b57b49baec66db4eec4d3e9b439ff388acd30b265c5ed09e0", + "packages/render/src/d2-figure.ts": "dfd8821ed04ff45206d6b9e7fac8ba6b47a138426101589a760318143f3ddece", + "packages/render/src/figure.ts": "4f994cc394859027e4986635bffc1b45144a01140e19a1ce6b7b5748fa58bbd7", + "packages/render/src/index.ts": "bc4367c1acbb3b7c3cbf15885a5f3ec78ce36d8216861f44ca1a08d12dc297d4", + "packages/render/src/opensysml.ts": "e4c76a741d2e66b3f403f3a57691493b0f95cbc667bd3f710d09463b4b8087ae", + "profiles/library-formation.ss": "5b124cfda09b5d2d950481ae8f1e6143a135f7f1c0ce0328fd3de5407e732c1f", + "project.sysml": "a1df4b8bd19d07011e1bf7d54b46ef855c66029ac543424743c7e388146bd9b1", + "scenarios/project-formation/func.ss": "b3943c92bf48daac75b456e5a994aedba099226ba6aa232e937dae57e53e1350", + "scenarios/project-formation/types.ss": "49605ccfa1a63d4fa31262f3ba8dee94765b93047fe3d36cc7fb23e4c9539f2b" + }, + "observations": [ + { + "kind": "source-excerpt-observation", + "source": "library/project-organization/objects.ss", + "line": 10, + "excerpt": "OrganizationDeclaration" + }, + { + "kind": "source-excerpt-observation", + "source": "library/project-organization/objects.ss", + "line": 28, + "excerpt": "catalog-value" + }, + { + "kind": "source-excerpt-observation", + "source": "library/project-organization/objects.ss", + "line": 41, + "excerpt": "mapping-value" + }, + { + "kind": "source-excerpt-observation", + "source": "profiles/library-formation.ss", + "line": 47, + "excerpt": "coding-policy:" + }, + { + "kind": "source-excerpt-observation", + "source": "profiles/library-formation.ss", + "line": 48, + "excerpt": "design-policy:" + }, + { + "kind": "source-excerpt-observation", + "source": "profiles/library-formation.ss", + "line": 49, + "excerpt": "resource-methods: '(native quint lean integration)" + }, + { + "kind": "source-excerpt-observation", + "source": "scenarios/project-formation/func.ss", + "line": 132, + "excerpt": "(def (select-formation-profile" + }, + { + "kind": "source-excerpt-observation", + "source": "scenarios/project-formation/func.ss", + "line": 201, + "excerpt": "status: 'capture-blocked" + }, + { + "kind": "source-excerpt-observation", + "source": "scenarios/project-formation/func.ss", + "line": 216, + "excerpt": "capture: #f" + }, + { + "kind": "source-excerpt-observation", + "source": "project.sysml", + "line": 28, + "excerpt": "part 'selection' : 'IndependentProfile'" + }, + { + "kind": "source-excerpt-observation", + "source": "project.sysml", + "line": 27, + "excerpt": "part 'scenarioUse' : 'ProjectScenario'" + }, + { + "kind": "source-excerpt-observation", + "source": "packages/render/src/d2-figure.ts", + "line": 85, + "excerpt": "srcArrow,dstArrow" + }, + { + "kind": "source-excerpt-observation", + "source": "packages/render/src/opensysml.ts", + "line": 68, + "excerpt": "SDK port does not belong to the declared endpoint" + }, + { + "kind": "source-excerpt-observation", + "source": "packages/render/src/index.ts", + "line": 50, + "excerpt": "isDeepStrictEqual(saved,selected)" + }, + { + "kind": "source-excerpt-observation", + "source": "packages/render/src/figure.ts", + "line": 95, + "excerpt": "Model selection differs from captured SDK trace" + } + ] +} \ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-dependency-matrix.json.license b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-dependency-matrix.json.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-dependency-matrix.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-dependency-matrix.png b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-dependency-matrix.png new file mode 100644 index 0000000..450fc19 Binary files /dev/null and b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-dependency-matrix.png differ diff --git a/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-dependency-matrix.png.license b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-dependency-matrix.png.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-dependency-matrix.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-detail.png b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-detail.png new file mode 100644 index 0000000..6fe5bf0 Binary files /dev/null and b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-detail.png differ diff --git a/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-detail.png.license b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-detail.png.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-detail.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-node-editor-detail.png b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-node-editor-detail.png new file mode 100644 index 0000000..ea634a3 Binary files /dev/null and b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-node-editor-detail.png differ diff --git a/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-node-editor-detail.png.license b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-node-editor-detail.png.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-node-editor-detail.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-node-editor.html b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-node-editor.html new file mode 100644 index 0000000..45147ac --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-node-editor.html @@ -0,0 +1,48 @@ + + +Library / Profile / Scenario architecture
+
Repository case / design view
DETERMINISTIC ENGINEERING / DE-CASE-01

One Library. Clear boundaries.

Shared definitions. Independent choices. Traceable project use.

+

1What does this Library make possible?

+

Publish once

Models, methods and policies
Reusable definitions from Library

+

Choose per project

Profile selects the needed capabilities
Original identities stay intact

+

Bind actual use

Scenario acquires project inputs
One use, with source associations

+

2Who publishes, selects and binds?Ownership / arrows point to dependencies

+
+ +
REUSABLE PUBLICATION BOUNDARY

Library

Definitions and contracts
Models / catalog / mapping
Coding and design-review policies
Method bindings and input demands
+
selects
+
PROJECT BOUNDARY / DE-CASE-01
+

Profile

Select parents, policies and methods
Reference catalog / mapping

+
binds
+

Scenario

Acquire actual inputs and origins
Retain choices, checks and gaps

+
Architecture modelOrg documentsDecisions
+ +
Model: project.sysml / a scoped responsibility viewASCENT reasoning and Aitia review retain separate owners
+

3Which responsibilities stay independent?

+

One definition owner

Selection and use reference definitions
Contract bodies are not copied

Selection keeps its scope

Retain parents and both policies
Bind actual published methods

Reuse existing admission

POO / Core own admission
Keep normalized return values

Keep review independent

Candidates, evidence and authority
Retain each source association

+

4How do models, docs and decisions connect?

Architecture modelproject.sysml / actual and target
Org design basisContracts, duties and acceptance
Decisions and reassessmentChoices, assumptions and triggers
Design view: issued C, accepted Q and independent review still need actual binding.
+

What does the current source show?

Library / Profile declarations are visible
Objects, both policies, catalog / mapping and method selection
SDK identities and source bindings are retained
Exact IDs, parents and port references; original input fingerprints

What is still blocked?

capture-blocked · capture = #f
Preparation still reports origin and method-footprint gaps
No review or delivery was executed here
Source observation and image export are not execution receipts
+
Library publishes meaning. Profile selects. Scenario binds this use.
Questions / model / source observations / architectureSource observations / explicit projection limits / no verification-pass claim
\ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-node-editor.json b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-node-editor.json new file mode 100644 index 0000000..ff10a47 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-node-editor.json @@ -0,0 +1,251 @@ +{ + "status": "design explanation / source observations only", + "attribution": { + "copyright": [ + "2026 hardenedlinux Linux Team and Contributors", + "2016 The Inter Project Authors (https://github.com/rsms/inter)" + ], + "license": "LGPL-2.1-or-later AND OFL-1.1" + }, + "observation": { + "canvas": { + "x": 0, + "y": 0, + "width": 1120, + "height": 1499.75 + }, + "subjects": [ + { + "id": "library", + "role": "default", + "x": 56, + "y": 465.578125, + "width": 310, + "height": 230 + }, + { + "id": "project.profile", + "role": "default", + "x": 425, + "y": 507.578125, + "width": 295, + "height": 111.59375 + }, + { + "id": "project.scenario", + "role": "default", + "x": 754, + "y": 507.578125, + "width": 295, + "height": 111.59375 + } + ], + "relations": [ + "(project.profile -> library)[0]", + "project.(scenario -> profile)[0]" + ], + "headings": [] + }, + "canvas": { + "background": "rgba(0, 0, 0, 0)", + "transparent": false + }, + "readability": { + "minimumTextSize": null, + "samples": 0 + }, + "inputSHA256": "563b0e2b59cc4bcd43f3a3235493e3903c017880f17ff53041dcb4e6395681d6", + "scenes": [], + "svgSHA256": [ + "64411b114f77fe9d65ad89f083383db5b629ed8dcbf2f97947472b70f156bb3a" + ], + "composedHTMLSHA256": "e2e35b0c8a1303e7b16358e27befe3d0f10ad0e05f28ffd0684a5e083b995a05", + "dependencies": { + "@fontsource/inter": "5.3.0", + "@fontsource/kalam": "5.3.0", + "@terrastruct/d2": "0.1.33", + "@xyflow/system": "0.0.83", + "elkjs": "0.12.1", + "parse5": "8.0.1", + "roughjs": "4.6.6", + "valibot": "1.2.0", + "web-worker": "1.5.0" + }, + "regionSHA256": { + "architecture": "d0329b20e817f8a17c373e0ee1886737b7db3e8c78edae6a0440425823484bf0" + }, + "htmlSHA256": "33b56a30b9598ab6e310fb8816a028baeed68442bd567907f85d2b2480f8889d", + "drawing": "precise", + "routing": "xyflow@0.0.83", + "assetSHA256": { + "@fontsource/inter/files/inter-latin-700-normal.woff2": "6f56409fd3d64bb85f7d070bce20749db2d66b6d63cec586cc22d1c761be2491", + "@fontsource/inter/files/inter-latin-400-normal.woff2": "8909904ab6c872eb994093482a88a28eca2cd95912d7b6fecd72103b0dc07edc" + }, + "pngSHA256": "119897156cd8c8b2a6e67bc24cef2cc4f37bc69b31c8ea4582c2b70b51e81a64", + "browser": "156.0.8078.4", + "width": 2240, + "height": 3000, + "scale": 2, + "bounds": { + "header": { + "x": 20, + "y": 20, + "width": 1080, + "height": 136.578125 + }, + "purpose": { + "x": 20, + "y": 156.578125, + "width": 1080, + "height": 209 + }, + "architecture": { + "x": 20, + "y": 377.578125, + "width": 1080, + "height": 389 + }, + "principles": { + "x": 20, + "y": 778.578125, + "width": 1080, + "height": 215.171875 + }, + "products": { + "x": 20, + "y": 1005.75, + "width": 1080, + "height": 172 + }, + "evidence": { + "x": 20, + "y": 1189.75, + "width": 1080, + "height": 198 + }, + "takeaway": { + "x": 20, + "y": 1387.75, + "width": 1080, + "height": 68 + } + }, + "sources": { + "docs/10-19-design/10-architecture/10.31-architecture-document-and-decision-contracts.org": "ce28501daff4fe5eaefc763f545645c2fe695a3354bcdde52a3645d827e71156", + "docs/10-19-design/10-architecture/10.34-case-design-review-dossier-draft.org": "3e3f75c8c3fe8565015607cbb4c131c231fa83f076588fdcc43527e5909b1981", + "docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture.d2": "865851b9efa36c9ddadd9d4e5284b4214564d6f57e3e6e85930709a92f7a96fc", + "docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow.d2": "44c4adf2ef884d207c201cb2a1f52dbf0d0eaa3dd3b27450c938f9a54a614e29", + "library/project-organization/objects.ss": "f660d3d90a55a9d7deff8782194dbdc952e85ecfd52463577e8ab1be9905a6b6", + "packages/render/examples/attribution.ts": "58f7914284a69c4ce42db61ec24c06cf9194232ed3402fc7ae12e3ded4187892", + "packages/render/examples/comparison.ts": "3a5f476766cd2873a83cf7664f9f724f99dcf3179d4122e8f05b28c615c6d49c", + "packages/render/examples/library-case.ts": "48c17b7230017b84a6c08db2de031e5c9bc01512a6f59f59abe306640cc0354f", + "packages/render/examples/library-case/architecture-diagram.ts": "fd588a69bb8d415b76fbefc8643cf1ebf3527b6a5eeb2bb20d32bdda5dcc6cbe", + "packages/render/examples/library-case/architecture.ts": "311b3bed75d08c8fd57284feb32f29bd1454585ec4a6a50b8d8e6953cb994c9f", + "packages/render/examples/library-case/dependency-matrix.ts": "aa0227233fa920da8675dd357ad89fef090bc9222434343e0cb974d5a8705848", + "packages/render/examples/library-case/resources.ts": "5c0520c8c1c8017c5031870908406bb1ab2d01ac5a64bab01e0563b2bebe7082", + "packages/render/examples/library-case/style.ts": "879edbe4083a27f2e47af394fe76e190d474028db35a6f97e56853bff3f3c371", + "packages/render/examples/library-case/workflow-declaration.ts": "9ce3f5c5aa4082c0bf5bb863491b14acadb9d10aa10de9e95c039b2f8a87261e", + "packages/render/examples/library-case/workflow-diagram.ts": "a772701acb40b752a5498927d8d9cc59bbd14dc08c04f096fe06b21dd0044dcc", + "packages/render/examples/library-case/workflow.ts": "2e442c8dd33e130b57b49baec66db4eec4d3e9b439ff388acd30b265c5ed09e0", + "packages/render/src/d2-figure.ts": "dfd8821ed04ff45206d6b9e7fac8ba6b47a138426101589a760318143f3ddece", + "packages/render/src/figure.ts": "4f994cc394859027e4986635bffc1b45144a01140e19a1ce6b7b5748fa58bbd7", + "packages/render/src/index.ts": "bc4367c1acbb3b7c3cbf15885a5f3ec78ce36d8216861f44ca1a08d12dc297d4", + "packages/render/src/opensysml.ts": "e4c76a741d2e66b3f403f3a57691493b0f95cbc667bd3f710d09463b4b8087ae", + "profiles/library-formation.ss": "5b124cfda09b5d2d950481ae8f1e6143a135f7f1c0ce0328fd3de5407e732c1f", + "project.sysml": "a1df4b8bd19d07011e1bf7d54b46ef855c66029ac543424743c7e388146bd9b1", + "scenarios/project-formation/func.ss": "b3943c92bf48daac75b456e5a994aedba099226ba6aa232e937dae57e53e1350", + "scenarios/project-formation/types.ss": "49605ccfa1a63d4fa31262f3ba8dee94765b93047fe3d36cc7fb23e4c9539f2b" + }, + "observations": [ + { + "kind": "source-excerpt-observation", + "source": "library/project-organization/objects.ss", + "line": 10, + "excerpt": "OrganizationDeclaration" + }, + { + "kind": "source-excerpt-observation", + "source": "library/project-organization/objects.ss", + "line": 28, + "excerpt": "catalog-value" + }, + { + "kind": "source-excerpt-observation", + "source": "library/project-organization/objects.ss", + "line": 41, + "excerpt": "mapping-value" + }, + { + "kind": "source-excerpt-observation", + "source": "profiles/library-formation.ss", + "line": 47, + "excerpt": "coding-policy:" + }, + { + "kind": "source-excerpt-observation", + "source": "profiles/library-formation.ss", + "line": 48, + "excerpt": "design-policy:" + }, + { + "kind": "source-excerpt-observation", + "source": "profiles/library-formation.ss", + "line": 49, + "excerpt": "resource-methods: '(native quint lean integration)" + }, + { + "kind": "source-excerpt-observation", + "source": "scenarios/project-formation/func.ss", + "line": 132, + "excerpt": "(def (select-formation-profile" + }, + { + "kind": "source-excerpt-observation", + "source": "scenarios/project-formation/func.ss", + "line": 201, + "excerpt": "status: 'capture-blocked" + }, + { + "kind": "source-excerpt-observation", + "source": "scenarios/project-formation/func.ss", + "line": 216, + "excerpt": "capture: #f" + }, + { + "kind": "source-excerpt-observation", + "source": "project.sysml", + "line": 28, + "excerpt": "part 'selection' : 'IndependentProfile'" + }, + { + "kind": "source-excerpt-observation", + "source": "project.sysml", + "line": 27, + "excerpt": "part 'scenarioUse' : 'ProjectScenario'" + }, + { + "kind": "source-excerpt-observation", + "source": "packages/render/src/d2-figure.ts", + "line": 85, + "excerpt": "srcArrow,dstArrow" + }, + { + "kind": "source-excerpt-observation", + "source": "packages/render/src/opensysml.ts", + "line": 68, + "excerpt": "SDK port does not belong to the declared endpoint" + }, + { + "kind": "source-excerpt-observation", + "source": "packages/render/src/index.ts", + "line": 50, + "excerpt": "isDeepStrictEqual(saved,selected)" + }, + { + "kind": "source-excerpt-observation", + "source": "packages/render/src/figure.ts", + "line": 95, + "excerpt": "Model selection differs from captured SDK trace" + } + ] +} \ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-node-editor.json.license b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-node-editor.json.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-node-editor.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-node-editor.png b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-node-editor.png new file mode 100644 index 0000000..502ed08 Binary files /dev/null and b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-node-editor.png differ diff --git a/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-node-editor.png.license b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-node-editor.png.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-node-editor.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-project-owned-detail.png b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-project-owned-detail.png new file mode 100644 index 0000000..2696639 Binary files /dev/null and b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-project-owned-detail.png differ diff --git a/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-project-owned-detail.png.license b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-project-owned-detail.png.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-project-owned-detail.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-project-owned.html b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-project-owned.html new file mode 100644 index 0000000..6bb2dcb --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-project-owned.html @@ -0,0 +1,39 @@ + + +Library / Profile / Scenario architecture
+
Repository case / design view
DETERMINISTIC ENGINEERING / DE-CASE-01

One Library. Clear boundaries.

Shared definitions. Independent choices. Traceable project use.

+

1What does this Library make possible?

+

Publish once

Models, methods and policies
Reusable definitions from Library

+

Choose per project

Profile selects the needed capabilities
Original identities stay intact

+

Bind actual use

Scenario acquires project inputs
One use, with source associations

+

2Who publishes, selects and binds?Ownership / arrows point to dependencies

+
LibraryProfileScenario
Library———
Profileselects——
Scenarioreferences definitionsbinds—
+
Model: project.sysml / a scoped responsibility viewASCENT reasoning and Aitia review retain separate owners
+

3Which responsibilities stay independent?

+

One definition owner

Selection and use reference definitions
Contract bodies are not copied

Selection keeps its scope

Retain parents and both policies
Bind actual published methods

Reuse existing admission

POO / Core own admission
Keep normalized return values

Keep review independent

Candidates, evidence and authority
Retain each source association

+

4How do models, docs and decisions connect?

Architecture modelproject.sysml / actual and target
Org design basisContracts, duties and acceptance
Decisions and reassessmentChoices, assumptions and triggers
Design view: issued C, accepted Q and independent review still need actual binding.
+

What does the current source show?

Library / Profile declarations are visible
Objects, both policies, catalog / mapping and method selection
SDK identities and source bindings are retained
Exact IDs, parents and port references; original input fingerprints

What is still blocked?

capture-blocked · capture = #f
Preparation still reports origin and method-footprint gaps
No review or delivery was executed here
Source observation and image export are not execution receipts
+
Library publishes meaning. Profile selects. Scenario binds this use.
Questions / model / source observations / architectureSource observations / explicit projection limits / no verification-pass claim
\ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-project-owned.json b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-project-owned.json new file mode 100644 index 0000000..7264d88 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-project-owned.json @@ -0,0 +1,221 @@ +{ + "status": "design explanation / source observations only", + "attribution": { + "copyright": [ + "2026 hardenedlinux Linux Team and Contributors", + "2016 The Inter Project Authors (https://github.com/rsms/inter)" + ], + "license": "LGPL-2.1-or-later AND OFL-1.1" + }, + "observation": { + "canvas": { + "x": 0, + "y": 0, + "width": 1120, + "height": 1382.359375 + }, + "subjects": [], + "relations": [], + "headings": [] + }, + "canvas": { + "background": "rgba(0, 0, 0, 0)", + "transparent": false + }, + "readability": { + "minimumTextSize": null, + "samples": 0 + }, + "inputSHA256": "f0f8480bbd0af1f1e7ff3890c24c35037258191b3588a7fc673afb8a1ef25df0", + "scenes": [], + "svgSHA256": [], + "composedHTMLSHA256": "f10abc74054ce540e154cda3bafc1a3b9c0c1e476c90bac5c82d95604135c667", + "dependencies": { + "@fontsource/inter": "5.3.0", + "@fontsource/kalam": "5.3.0", + "@terrastruct/d2": "0.1.33", + "@xyflow/system": "0.0.83", + "elkjs": "0.12.1", + "parse5": "8.0.1", + "roughjs": "4.6.6", + "valibot": "1.2.0", + "web-worker": "1.5.0" + }, + "regionSHA256": { + "architecture": "928ec4f6d1a96c10a35c943f1799633ec6f6c4b92273d34c53c470b7092e035f" + }, + "htmlSHA256": "d3e70940e67400742df284daa35989f4369c6c9d450e4bd85bb19b15fbdd8a7b", + "drawing": "precise", + "routing": "none", + "assetSHA256": { + "@fontsource/inter/files/inter-latin-700-normal.woff2": "6f56409fd3d64bb85f7d070bce20749db2d66b6d63cec586cc22d1c761be2491", + "@fontsource/inter/files/inter-latin-400-normal.woff2": "8909904ab6c872eb994093482a88a28eca2cd95912d7b6fecd72103b0dc07edc" + }, + "pngSHA256": "8cff63003fc408ca732e842dcb53ec34a024b82a13cda5af1ba996dbb7d2cedd", + "browser": "156.0.8078.4", + "width": 2240, + "height": 2766, + "scale": 2, + "bounds": { + "header": { + "x": 20, + "y": 20, + "width": 1080, + "height": 135.578125 + }, + "purpose": { + "x": 20, + "y": 155.578125, + "width": 1080, + "height": 187 + }, + "architecture": { + "x": 20, + "y": 354.578125, + "width": 1080, + "height": 318 + }, + "principles": { + "x": 20, + "y": 684.578125, + "width": 1080, + "height": 194.78125 + }, + "products": { + "x": 20, + "y": 891.359375, + "width": 1080, + "height": 173 + }, + "evidence": { + "x": 20, + "y": 1076.359375, + "width": 1080, + "height": 196 + }, + "takeaway": { + "x": 20, + "y": 1272.359375, + "width": 1080, + "height": 68 + } + }, + "sources": { + "docs/10-19-design/10-architecture/10.31-architecture-document-and-decision-contracts.org": "ce28501daff4fe5eaefc763f545645c2fe695a3354bcdde52a3645d827e71156", + "docs/10-19-design/10-architecture/10.34-case-design-review-dossier-draft.org": "3e3f75c8c3fe8565015607cbb4c131c231fa83f076588fdcc43527e5909b1981", + "docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture.d2": "865851b9efa36c9ddadd9d4e5284b4214564d6f57e3e6e85930709a92f7a96fc", + "docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow.d2": "44c4adf2ef884d207c201cb2a1f52dbf0d0eaa3dd3b27450c938f9a54a614e29", + "library/project-organization/objects.ss": "f660d3d90a55a9d7deff8782194dbdc952e85ecfd52463577e8ab1be9905a6b6", + "packages/render/examples/attribution.ts": "58f7914284a69c4ce42db61ec24c06cf9194232ed3402fc7ae12e3ded4187892", + "packages/render/examples/comparison.ts": "3a5f476766cd2873a83cf7664f9f724f99dcf3179d4122e8f05b28c615c6d49c", + "packages/render/examples/library-case.ts": "48c17b7230017b84a6c08db2de031e5c9bc01512a6f59f59abe306640cc0354f", + "packages/render/examples/library-case/architecture-diagram.ts": "fd588a69bb8d415b76fbefc8643cf1ebf3527b6a5eeb2bb20d32bdda5dcc6cbe", + "packages/render/examples/library-case/architecture.ts": "311b3bed75d08c8fd57284feb32f29bd1454585ec4a6a50b8d8e6953cb994c9f", + "packages/render/examples/library-case/dependency-matrix.ts": "aa0227233fa920da8675dd357ad89fef090bc9222434343e0cb974d5a8705848", + "packages/render/examples/library-case/resources.ts": "5c0520c8c1c8017c5031870908406bb1ab2d01ac5a64bab01e0563b2bebe7082", + "packages/render/examples/library-case/style.ts": "879edbe4083a27f2e47af394fe76e190d474028db35a6f97e56853bff3f3c371", + "packages/render/examples/library-case/workflow-declaration.ts": "9ce3f5c5aa4082c0bf5bb863491b14acadb9d10aa10de9e95c039b2f8a87261e", + "packages/render/examples/library-case/workflow-diagram.ts": "a772701acb40b752a5498927d8d9cc59bbd14dc08c04f096fe06b21dd0044dcc", + "packages/render/examples/library-case/workflow.ts": "2e442c8dd33e130b57b49baec66db4eec4d3e9b439ff388acd30b265c5ed09e0", + "packages/render/src/d2-figure.ts": "dfd8821ed04ff45206d6b9e7fac8ba6b47a138426101589a760318143f3ddece", + "packages/render/src/figure.ts": "4f994cc394859027e4986635bffc1b45144a01140e19a1ce6b7b5748fa58bbd7", + "packages/render/src/index.ts": "bc4367c1acbb3b7c3cbf15885a5f3ec78ce36d8216861f44ca1a08d12dc297d4", + "packages/render/src/opensysml.ts": "e4c76a741d2e66b3f403f3a57691493b0f95cbc667bd3f710d09463b4b8087ae", + "profiles/library-formation.ss": "5b124cfda09b5d2d950481ae8f1e6143a135f7f1c0ce0328fd3de5407e732c1f", + "project.sysml": "a1df4b8bd19d07011e1bf7d54b46ef855c66029ac543424743c7e388146bd9b1", + "scenarios/project-formation/func.ss": "b3943c92bf48daac75b456e5a994aedba099226ba6aa232e937dae57e53e1350", + "scenarios/project-formation/types.ss": "49605ccfa1a63d4fa31262f3ba8dee94765b93047fe3d36cc7fb23e4c9539f2b" + }, + "observations": [ + { + "kind": "source-excerpt-observation", + "source": "library/project-organization/objects.ss", + "line": 10, + "excerpt": "OrganizationDeclaration" + }, + { + "kind": "source-excerpt-observation", + "source": "library/project-organization/objects.ss", + "line": 28, + "excerpt": "catalog-value" + }, + { + "kind": "source-excerpt-observation", + "source": "library/project-organization/objects.ss", + "line": 41, + "excerpt": "mapping-value" + }, + { + "kind": "source-excerpt-observation", + "source": "profiles/library-formation.ss", + "line": 47, + "excerpt": "coding-policy:" + }, + { + "kind": "source-excerpt-observation", + "source": "profiles/library-formation.ss", + "line": 48, + "excerpt": "design-policy:" + }, + { + "kind": "source-excerpt-observation", + "source": "profiles/library-formation.ss", + "line": 49, + "excerpt": "resource-methods: '(native quint lean integration)" + }, + { + "kind": "source-excerpt-observation", + "source": "scenarios/project-formation/func.ss", + "line": 132, + "excerpt": "(def (select-formation-profile" + }, + { + "kind": "source-excerpt-observation", + "source": "scenarios/project-formation/func.ss", + "line": 201, + "excerpt": "status: 'capture-blocked" + }, + { + "kind": "source-excerpt-observation", + "source": "scenarios/project-formation/func.ss", + "line": 216, + "excerpt": "capture: #f" + }, + { + "kind": "source-excerpt-observation", + "source": "project.sysml", + "line": 28, + "excerpt": "part 'selection' : 'IndependentProfile'" + }, + { + "kind": "source-excerpt-observation", + "source": "project.sysml", + "line": 27, + "excerpt": "part 'scenarioUse' : 'ProjectScenario'" + }, + { + "kind": "source-excerpt-observation", + "source": "packages/render/src/d2-figure.ts", + "line": 85, + "excerpt": "srcArrow,dstArrow" + }, + { + "kind": "source-excerpt-observation", + "source": "packages/render/src/opensysml.ts", + "line": 68, + "excerpt": "SDK port does not belong to the declared endpoint" + }, + { + "kind": "source-excerpt-observation", + "source": "packages/render/src/index.ts", + "line": 50, + "excerpt": "isDeepStrictEqual(saved,selected)" + }, + { + "kind": "source-excerpt-observation", + "source": "packages/render/src/figure.ts", + "line": 95, + "excerpt": "Model selection differs from captured SDK trace" + } + ] +} \ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-project-owned.json.license b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-project-owned.json.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-project-owned.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-project-owned.png b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-project-owned.png new file mode 100644 index 0000000..23eb49d Binary files /dev/null and b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-project-owned.png differ diff --git a/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-project-owned.png.license b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-project-owned.png.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-project-owned.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-sketchbook-detail.png b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-sketchbook-detail.png new file mode 100644 index 0000000..d8fda00 Binary files /dev/null and b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-sketchbook-detail.png differ diff --git a/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-sketchbook-detail.png.license b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-sketchbook-detail.png.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-sketchbook-detail.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-sketchbook.html b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-sketchbook.html new file mode 100644 index 0000000..cc3b66c --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-sketchbook.html @@ -0,0 +1,48 @@ + + +Library / Profile / Scenario architecture
+
Repository case / design view
DETERMINISTIC ENGINEERING / DE-CASE-01

One Library. Clear boundaries.

Shared definitions. Independent choices. Traceable project use.

+

1What does this Library make possible?

+

Publish once

Models, methods and policies
Reusable definitions from Library

+

Choose per project

Profile selects the needed capabilities
Original identities stay intact

+

Bind actual use

Scenario acquires project inputs
One use, with source associations

+

2Who publishes, selects and binds?Ownership / arrows point to dependencies

+
+ +
REUSABLE PUBLICATION BOUNDARY

Library

Definitions and contracts
Models / catalog / mapping
Coding and design-review policies
Method bindings and input demands
+
selects
+
PROJECT BOUNDARY / DE-CASE-01
+

Profile

Select parents, policies and methods
Reference catalog / mapping

+
binds
+

Scenario

Acquire actual inputs and origins
Retain choices, checks and gaps

+
Architecture modelOrg documentsDecisions
+ +
Model: project.sysml / a scoped responsibility viewASCENT reasoning and Aitia review retain separate owners
+

3Which responsibilities stay independent?

+

One definition owner

Selection and use reference definitions
Contract bodies are not copied

Selection keeps its scope

Retain parents and both policies
Bind actual published methods

Reuse existing admission

POO / Core own admission
Keep normalized return values

Keep review independent

Candidates, evidence and authority
Retain each source association

+

4How do models, docs and decisions connect?

Architecture modelproject.sysml / actual and target
Org design basisContracts, duties and acceptance
Decisions and reassessmentChoices, assumptions and triggers
Design view: issued C, accepted Q and independent review still need actual binding.
+

What does the current source show?

Library / Profile declarations are visible
Objects, both policies, catalog / mapping and method selection
SDK identities and source bindings are retained
Exact IDs, parents and port references; original input fingerprints

What is still blocked?

capture-blocked · capture = #f
Preparation still reports origin and method-footprint gaps
No review or delivery was executed here
Source observation and image export are not execution receipts
+
Library publishes meaning. Profile selects. Scenario binds this use.
Questions / model / source observations / architectureSource observations / explicit projection limits / no verification-pass claim
\ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-sketchbook.json b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-sketchbook.json new file mode 100644 index 0000000..63847da --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-sketchbook.json @@ -0,0 +1,251 @@ +{ + "status": "design explanation / source observations only", + "attribution": { + "copyright": [ + "2026 hardenedlinux Linux Team and Contributors", + "2014 Indian Type Foundry (info@indiantypefoundry.com)" + ], + "license": "LGPL-2.1-or-later AND OFL-1.1" + }, + "observation": { + "canvas": { + "x": 0, + "y": 0, + "width": 1120, + "height": 1425.359375 + }, + "subjects": [ + { + "id": "library", + "role": "default", + "x": 40, + "y": 421.578125, + "width": 310, + "height": 222 + }, + { + "id": "project.profile", + "role": "default", + "x": 409, + "y": 465.578125, + "width": 311, + "height": 111.59375 + }, + { + "id": "project.scenario", + "role": "default", + "x": 754, + "y": 465.578125, + "width": 311, + "height": 111.59375 + } + ], + "relations": [ + "(project.profile -> library)[0]", + "project.(scenario -> profile)[0]" + ], + "headings": [] + }, + "canvas": { + "background": "rgb(250, 247, 238)", + "transparent": false + }, + "readability": { + "minimumTextSize": null, + "samples": 0 + }, + "inputSHA256": "561cb967c6f8e57e7a7d9cedf82053fc85c980f91218a1b3be01c004379b7292", + "scenes": [], + "svgSHA256": [ + "28008838b807ca505b7d4dc8ac43cd40768677d5fcbf233c5e15f57be53726e9" + ], + "composedHTMLSHA256": "10f355dee1433f0c850560b03f2b7151116188cf2dee05c95156650223a3d994", + "dependencies": { + "@fontsource/inter": "5.3.0", + "@fontsource/kalam": "5.3.0", + "@terrastruct/d2": "0.1.33", + "@xyflow/system": "0.0.83", + "elkjs": "0.12.1", + "parse5": "8.0.1", + "roughjs": "4.6.6", + "valibot": "1.2.0", + "web-worker": "1.5.0" + }, + "regionSHA256": { + "architecture": "046951d8060a046e62ecb652776373b069c4a86ca6700dc889d3220d9d494aab" + }, + "htmlSHA256": "a490c5430c0c32ec3acb69ec0d0971404ef9cfb8786cd618f964cefeeef6e86e", + "drawing": "roughjs@4.6.6", + "routing": "xyflow@0.0.83", + "assetSHA256": { + "@fontsource/kalam/files/kalam-latin-400-normal.woff2": "954410601a823f37e219f7930b7446f86afa15621326a7078d56fb9c910135cb", + "@fontsource/kalam/files/kalam-latin-700-normal.woff2": "252063af6ade8b9a744cde4ddad0fc21ea53b8ba711eed121a0c2e8610ea9c93" + }, + "pngSHA256": "525209066235f849cc83ee2338a23b4684948aecf04fee4132e21757c1be9b10", + "browser": "156.0.8078.4", + "width": 2240, + "height": 2852, + "scale": 2, + "bounds": { + "header": { + "x": 20, + "y": 20, + "width": 1080, + "height": 141.578125 + }, + "purpose": { + "x": 20, + "y": 161.578125, + "width": 1080, + "height": 184 + }, + "architecture": { + "x": 20, + "y": 357.578125, + "width": 1080, + "height": 337 + }, + "principles": { + "x": 20, + "y": 706.578125, + "width": 1080, + "height": 199.78125 + }, + "products": { + "x": 20, + "y": 918.359375, + "width": 1080, + "height": 186 + }, + "evidence": { + "x": 20, + "y": 1116.359375, + "width": 1080, + "height": 193 + }, + "takeaway": { + "x": 20, + "y": 1309.359375, + "width": 1080, + "height": 68 + } + }, + "sources": { + "docs/10-19-design/10-architecture/10.31-architecture-document-and-decision-contracts.org": "ce28501daff4fe5eaefc763f545645c2fe695a3354bcdde52a3645d827e71156", + "docs/10-19-design/10-architecture/10.34-case-design-review-dossier-draft.org": "3e3f75c8c3fe8565015607cbb4c131c231fa83f076588fdcc43527e5909b1981", + "docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture.d2": "865851b9efa36c9ddadd9d4e5284b4214564d6f57e3e6e85930709a92f7a96fc", + "docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow.d2": "44c4adf2ef884d207c201cb2a1f52dbf0d0eaa3dd3b27450c938f9a54a614e29", + "library/project-organization/objects.ss": "f660d3d90a55a9d7deff8782194dbdc952e85ecfd52463577e8ab1be9905a6b6", + "packages/render/examples/attribution.ts": "58f7914284a69c4ce42db61ec24c06cf9194232ed3402fc7ae12e3ded4187892", + "packages/render/examples/comparison.ts": "3a5f476766cd2873a83cf7664f9f724f99dcf3179d4122e8f05b28c615c6d49c", + "packages/render/examples/library-case.ts": "48c17b7230017b84a6c08db2de031e5c9bc01512a6f59f59abe306640cc0354f", + "packages/render/examples/library-case/architecture-diagram.ts": "fd588a69bb8d415b76fbefc8643cf1ebf3527b6a5eeb2bb20d32bdda5dcc6cbe", + "packages/render/examples/library-case/architecture.ts": "311b3bed75d08c8fd57284feb32f29bd1454585ec4a6a50b8d8e6953cb994c9f", + "packages/render/examples/library-case/dependency-matrix.ts": "aa0227233fa920da8675dd357ad89fef090bc9222434343e0cb974d5a8705848", + "packages/render/examples/library-case/resources.ts": "5c0520c8c1c8017c5031870908406bb1ab2d01ac5a64bab01e0563b2bebe7082", + "packages/render/examples/library-case/style.ts": "879edbe4083a27f2e47af394fe76e190d474028db35a6f97e56853bff3f3c371", + "packages/render/examples/library-case/workflow-declaration.ts": "9ce3f5c5aa4082c0bf5bb863491b14acadb9d10aa10de9e95c039b2f8a87261e", + "packages/render/examples/library-case/workflow-diagram.ts": "a772701acb40b752a5498927d8d9cc59bbd14dc08c04f096fe06b21dd0044dcc", + "packages/render/examples/library-case/workflow.ts": "2e442c8dd33e130b57b49baec66db4eec4d3e9b439ff388acd30b265c5ed09e0", + "packages/render/src/d2-figure.ts": "dfd8821ed04ff45206d6b9e7fac8ba6b47a138426101589a760318143f3ddece", + "packages/render/src/figure.ts": "4f994cc394859027e4986635bffc1b45144a01140e19a1ce6b7b5748fa58bbd7", + "packages/render/src/index.ts": "bc4367c1acbb3b7c3cbf15885a5f3ec78ce36d8216861f44ca1a08d12dc297d4", + "packages/render/src/opensysml.ts": "e4c76a741d2e66b3f403f3a57691493b0f95cbc667bd3f710d09463b4b8087ae", + "profiles/library-formation.ss": "5b124cfda09b5d2d950481ae8f1e6143a135f7f1c0ce0328fd3de5407e732c1f", + "project.sysml": "a1df4b8bd19d07011e1bf7d54b46ef855c66029ac543424743c7e388146bd9b1", + "scenarios/project-formation/func.ss": "b3943c92bf48daac75b456e5a994aedba099226ba6aa232e937dae57e53e1350", + "scenarios/project-formation/types.ss": "49605ccfa1a63d4fa31262f3ba8dee94765b93047fe3d36cc7fb23e4c9539f2b" + }, + "observations": [ + { + "kind": "source-excerpt-observation", + "source": "library/project-organization/objects.ss", + "line": 10, + "excerpt": "OrganizationDeclaration" + }, + { + "kind": "source-excerpt-observation", + "source": "library/project-organization/objects.ss", + "line": 28, + "excerpt": "catalog-value" + }, + { + "kind": "source-excerpt-observation", + "source": "library/project-organization/objects.ss", + "line": 41, + "excerpt": "mapping-value" + }, + { + "kind": "source-excerpt-observation", + "source": "profiles/library-formation.ss", + "line": 47, + "excerpt": "coding-policy:" + }, + { + "kind": "source-excerpt-observation", + "source": "profiles/library-formation.ss", + "line": 48, + "excerpt": "design-policy:" + }, + { + "kind": "source-excerpt-observation", + "source": "profiles/library-formation.ss", + "line": 49, + "excerpt": "resource-methods: '(native quint lean integration)" + }, + { + "kind": "source-excerpt-observation", + "source": "scenarios/project-formation/func.ss", + "line": 132, + "excerpt": "(def (select-formation-profile" + }, + { + "kind": "source-excerpt-observation", + "source": "scenarios/project-formation/func.ss", + "line": 201, + "excerpt": "status: 'capture-blocked" + }, + { + "kind": "source-excerpt-observation", + "source": "scenarios/project-formation/func.ss", + "line": 216, + "excerpt": "capture: #f" + }, + { + "kind": "source-excerpt-observation", + "source": "project.sysml", + "line": 28, + "excerpt": "part 'selection' : 'IndependentProfile'" + }, + { + "kind": "source-excerpt-observation", + "source": "project.sysml", + "line": 27, + "excerpt": "part 'scenarioUse' : 'ProjectScenario'" + }, + { + "kind": "source-excerpt-observation", + "source": "packages/render/src/d2-figure.ts", + "line": 85, + "excerpt": "srcArrow,dstArrow" + }, + { + "kind": "source-excerpt-observation", + "source": "packages/render/src/opensysml.ts", + "line": 68, + "excerpt": "SDK port does not belong to the declared endpoint" + }, + { + "kind": "source-excerpt-observation", + "source": "packages/render/src/index.ts", + "line": 50, + "excerpt": "isDeepStrictEqual(saved,selected)" + }, + { + "kind": "source-excerpt-observation", + "source": "packages/render/src/figure.ts", + "line": 95, + "excerpt": "Model selection differs from captured SDK trace" + } + ] +} \ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-sketchbook.json.license b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-sketchbook.json.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-sketchbook.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-sketchbook.png b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-sketchbook.png new file mode 100644 index 0000000..5bec593 Binary files /dev/null and b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-sketchbook.png differ diff --git a/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-sketchbook.png.license b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-sketchbook.png.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture-sketchbook.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture.d2 b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture.d2 new file mode 100644 index 0000000..d37bbdb --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture.d2 @@ -0,0 +1,301 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + +# Declared Questions and content for the actual DE-CASE-01 case. +# Source observations only; no issued C, accepted Q or review R. +vars: { + d2-config: { + layout-engine: elk + data: { + # Application declarations travel through the official graph.data interface. + figure: |json +{ + "title": "Library / Profile / Scenario architecture", + "purpose": "architecture", + "kind": "system", + "language": "en", + "width": 1120, + "primary": "why", + "questions": [ + { + "ref": "why", + "text": "What does this Library make possible?", + "focusRefs": [ + "library", + "profile", + "scenario" + ] + }, + { + "ref": "ownership", + "text": "Who publishes, selects and binds?", + "focusRefs": [ + "library", + "profile", + "scenario", + "model" + ] + }, + { + "ref": "boundaries", + "text": "Which responsibilities stay independent?", + "focusRefs": [ + "library", + "profile", + "types" + ] + }, + { + "ref": "products", + "text": "How do models, docs and decisions connect?", + "focusRefs": [ + "model", + "documents", + "decisions" + ] + }, + { + "ref": "evidence", + "text": "What does the current source show?", + "focusRefs": [ + "library", + "profile", + "capture-stop" + ] + } + ], + "references": { + "library": "library/project-organization/objects.ss", + "profile": "profiles/library-formation.ss", + "scenario": "scenarios/project-formation/func.ss", + "capture-stop": "scenarios/project-formation/func.ss", + "model": "project.sysml", + "documents": "docs/10-19-design/10-architecture/10.31-architecture-document-and-decision-contracts.org", + "decisions": "docs/10-19-design/10-architecture/10.34-case-design-review-dossier-draft.org", + "types": "scenarios/project-formation/types.ss", + "render-d2": "packages/render/src/d2-figure.ts", + "render-sysml": "packages/render/src/opensysml.ts", + "render-binding": "packages/render/src/index.ts", + "render-context": "packages/render/src/figure.ts" + }, + "basis": { + "captureRef": "design-candidate:DE-CASE-01/rendering", + "modelRefs": [ + "project.sysml" + ], + "obligationRefs": [ + "docs/10-19-design/10-architecture/10.31-architecture-document-and-decision-contracts.org" + ], + "evidenceRefs": [] + }, + "copy": { + "badge": "Repository case / design view", + "eyebrow": "DETERMINISTIC ENGINEERING / DE-CASE-01", + "title": "One Library. ", + "emphasis": "Clear boundaries.", + "annotation-01": "Shared definitions. Independent choices. Traceable project use.", + "publish-heading": "Publish once", + "annotation-02": "Models, methods and policies", + "annotation-03": "Reusable definitions from Library", + "select-heading": "Choose per project", + "annotation-04": "Profile selects the needed capabilities", + "annotation-05": "Original identities stay intact", + "capture-heading": "Bind actual use", + "annotation-06": "Scenario acquires project inputs", + "annotation-07": "One use, with source associations", + "annotation-08": "Ownership / arrows point to dependencies", + "library-boundary": "REUSABLE PUBLICATION BOUNDARY", + "library-label": "Library", + "annotation-09": "Definitions and contracts", + "annotation-10": "Models / catalog / mapping", + "annotation-11": "Coding and design-review policies", + "annotation-12": "Method bindings and input demands", + "annotation-13": "selects", + "project-boundary": "PROJECT BOUNDARY / DE-CASE-01", + "profile-label": "Profile", + "annotation-14": "Select parents, policies and methods", + "annotation-15": "Reference catalog / mapping", + "annotation-16": "binds", + "scenario-label": "Scenario", + "annotation-17": "Acquire actual inputs and origins", + "annotation-18": "Retain choices, checks and gaps", + "model-label": "Architecture model", + "document-label": "Org documents", + "decision-label": "Decisions", + "annotation-19": "Model: project.sysml / a scoped responsibility view", + "annotation-20": "ASCENT", + "annotation-21": " reasoning and ", + "annotation-22": "Aitia", + "annotation-23": " review retain separate owners", + "annotation-24": "One definition owner", + "annotation-25": "Selection and use reference definitions", + "annotation-26": "Contract bodies are not copied", + "annotation-27": "Selection keeps its scope", + "annotation-28": "Retain parents and both policies", + "annotation-29": "Bind actual published methods", + "annotation-30": "Reuse existing admission", + "annotation-31": "POO / Core own admission", + "annotation-32": "Keep normalized return values", + "annotation-33": "Keep review independent", + "annotation-34": "Candidates, evidence and authority", + "annotation-35": "Retain each source association", + "annotation-36": "project.sysml / actual and target", + "annotation-37": "Org design basis", + "annotation-38": "Contracts, duties and acceptance", + "annotation-39": "Decisions and reassessment", + "annotation-40": "Choices, assumptions and triggers", + "annotation-41": "Design view: issued C, accepted Q and independent review still need actual binding.", + "annotation-42": "Library / Profile declarations are visible", + "annotation-43": "Objects, both policies, catalog / mapping and method selection", + "annotation-44": "SDK identities and source bindings are retained", + "annotation-45": "Exact IDs, parents and port references; original input fingerprints", + "annotation-46": "What is still blocked?", + "annotation-47": "capture-blocked \u00b7 capture = #f", + "annotation-48": "Preparation still reports origin and method-footprint gaps", + "annotation-49": "No review or delivery was executed here", + "annotation-50": "Source observation and image export are not execution receipts", + "annotation-51": "Library publishes meaning. Profile selects. Scenario binds this use.", + "annotation-52": "Questions / model / source observations / architecture", + "annotation-53": "Source observations / explicit projection limits / no verification-pass claim" + }, + "themes": [ + "blueprint", + "compact" + ], + "variants": [ + { + "name": "sketchbook", + "themes": [ + "sketchbook", + "compact" + ] + }, + { + "name": "node-editor", + "themes": [ + "blueprint", + "node-editor", + "compact" + ] + }, + { + "name": "dependency-matrix", + "themes": [ + "blueprint", + "compact" + ], + "layout": "dependency-matrix" + }, + { + "name": "project-owned", + "kind": "responsibility-map", + "layout": "dependency-matrix", + "themes": [ + "field-notes", + "workbench", + "compact" + ], + "icons": [ + "engineering", + "repo" + ] + } + ], + "presentation": { + "matrix": [ + { + "node": "library", + "label": "Library" + }, + { + "node": "project.profile", + "label": "Profile" + }, + { + "node": "project.scenario", + "label": "Scenario" + } + ], + "observations": [ + { + "ref": "library", + "excerpt": "OrganizationDeclaration" + }, + { + "ref": "library", + "excerpt": "catalog-value" + }, + { + "ref": "library", + "excerpt": "mapping-value" + }, + { + "ref": "profile", + "excerpt": "coding-policy:" + }, + { + "ref": "profile", + "excerpt": "design-policy:" + }, + { + "ref": "profile", + "excerpt": "resource-methods: '(native quint lean integration)" + }, + { + "ref": "scenario", + "excerpt": "(def (select-formation-profile" + }, + { + "ref": "capture-stop", + "excerpt": "status: 'capture-blocked" + }, + { + "ref": "capture-stop", + "excerpt": "capture: #f" + }, + { + "ref": "model", + "excerpt": "part 'selection' : 'IndependentProfile'" + }, + { + "ref": "model", + "excerpt": "part 'scenarioUse' : 'ProjectScenario'" + }, + { + "ref": "render-d2", + "excerpt": "srcArrow,dstArrow" + }, + { + "ref": "render-sysml", + "excerpt": "SDK port does not belong to the declared endpoint" + }, + { + "ref": "render-binding", + "excerpt": "isDeepStrictEqual(saved,selected)" + }, + { + "ref": "render-context", + "excerpt": "Model selection differs from captured SDK trace" + } + ] + }, + "icons": [ + "engineering" + ] +} + | + } + } +} +direction: right +library: Library +project: { + profile: Profile + scenario: Scenario + inputs: "Model / Org / decisions" +} +project.profile -> library: selects +project.scenario -> project.profile: binds +project.scenario -> library: references definitions +project.scenario -> project.inputs: binds actual project inputs diff --git a/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture.html b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture.html new file mode 100644 index 0000000..4235f4f --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture.html @@ -0,0 +1,48 @@ + + +Library / Profile / Scenario architecture
+
Repository case / design view
DETERMINISTIC ENGINEERING / DE-CASE-01

One Library. Clear boundaries.

Shared definitions. Independent choices. Traceable project use.

+

1What does this Library make possible?

+

Publish once

Models, methods and policies
Reusable definitions from Library

+

Choose per project

Profile selects the needed capabilities
Original identities stay intact

+

Bind actual use

Scenario acquires project inputs
One use, with source associations

+

2Who publishes, selects and binds?Ownership / arrows point to dependencies

+
+ +
REUSABLE PUBLICATION BOUNDARY

Library

Definitions and contracts
Models / catalog / mapping
Coding and design-review policies
Method bindings and input demands
+
selects
+
PROJECT BOUNDARY / DE-CASE-01
+

Profile

Select parents, policies and methods
Reference catalog / mapping

+
binds
+

Scenario

Acquire actual inputs and origins
Retain choices, checks and gaps

+
Architecture modelOrg documentsDecisions
+ +
Model: project.sysml / a scoped responsibility viewASCENT reasoning and Aitia review retain separate owners
+

3Which responsibilities stay independent?

+

One definition owner

Selection and use reference definitions
Contract bodies are not copied

Selection keeps its scope

Retain parents and both policies
Bind actual published methods

Reuse existing admission

POO / Core own admission
Keep normalized return values

Keep review independent

Candidates, evidence and authority
Retain each source association

+

4How do models, docs and decisions connect?

Architecture modelproject.sysml / actual and target
Org design basisContracts, duties and acceptance
Decisions and reassessmentChoices, assumptions and triggers
Design view: issued C, accepted Q and independent review still need actual binding.
+

What does the current source show?

Library / Profile declarations are visible
Objects, both policies, catalog / mapping and method selection
SDK identities and source bindings are retained
Exact IDs, parents and port references; original input fingerprints

What is still blocked?

capture-blocked · capture = #f
Preparation still reports origin and method-footprint gaps
No review or delivery was executed here
Source observation and image export are not execution receipts
+
Library publishes meaning. Profile selects. Scenario binds this use.
Questions / model / source observations / architectureSource observations / explicit projection limits / no verification-pass claim
\ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture.json b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture.json new file mode 100644 index 0000000..499955b --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture.json @@ -0,0 +1,251 @@ +{ + "status": "design explanation / source observations only", + "attribution": { + "copyright": [ + "2026 hardenedlinux Linux Team and Contributors", + "2016 The Inter Project Authors (https://github.com/rsms/inter)" + ], + "license": "LGPL-2.1-or-later AND OFL-1.1" + }, + "observation": { + "canvas": { + "x": 0, + "y": 0, + "width": 1120, + "height": 1447.75 + }, + "subjects": [ + { + "id": "library", + "role": "default", + "x": 41, + "y": 441.578125, + "width": 310, + "height": 230 + }, + { + "id": "project.profile", + "role": "default", + "x": 410, + "y": 483.578125, + "width": 310, + "height": 109.59375 + }, + { + "id": "project.scenario", + "role": "default", + "x": 754, + "y": 483.578125, + "width": 310, + "height": 109.59375 + } + ], + "relations": [ + "(project.profile -> library)[0]", + "project.(scenario -> profile)[0]" + ], + "headings": [] + }, + "canvas": { + "background": "rgba(0, 0, 0, 0)", + "transparent": false + }, + "readability": { + "minimumTextSize": null, + "samples": 0 + }, + "inputSHA256": "cdb3dedf4ba15e2c2f4399df4324e0d739ebb13062a8b6a5188a3bbcaf1da088", + "scenes": [], + "svgSHA256": [ + "530c75439be93b64f4602330bd252d018f9286467f7aabcc5d0dc8888bfdbe4e" + ], + "composedHTMLSHA256": "2b085628b084669ca01a8d3b560fd88d99d1a1634679c9059baec091ee7be254", + "dependencies": { + "@fontsource/inter": "5.3.0", + "@fontsource/kalam": "5.3.0", + "@terrastruct/d2": "0.1.33", + "@xyflow/system": "0.0.83", + "elkjs": "0.12.1", + "parse5": "8.0.1", + "roughjs": "4.6.6", + "valibot": "1.2.0", + "web-worker": "1.5.0" + }, + "regionSHA256": { + "architecture": "4e112da0cc2236a5c878cb925608a5d38e1789ced05b94ce33c32420d55747a7" + }, + "htmlSHA256": "997657326cd1461fb69d3db303c02e782f5cddcefef1e088385bcdd4b722b323", + "drawing": "precise", + "routing": "xyflow@0.0.83", + "assetSHA256": { + "@fontsource/inter/files/inter-latin-400-normal.woff2": "8909904ab6c872eb994093482a88a28eca2cd95912d7b6fecd72103b0dc07edc", + "@fontsource/inter/files/inter-latin-700-normal.woff2": "6f56409fd3d64bb85f7d070bce20749db2d66b6d63cec586cc22d1c761be2491" + }, + "pngSHA256": "a6432122e650b2e8e405226d2536bbc861bdc3225897046fb08545e17ac5c158", + "browser": "156.0.8078.4", + "width": 2240, + "height": 2896, + "scale": 2, + "bounds": { + "header": { + "x": 20, + "y": 20, + "width": 1080, + "height": 136.578125 + }, + "purpose": { + "x": 20, + "y": 156.578125, + "width": 1080, + "height": 209 + }, + "architecture": { + "x": 20, + "y": 377.578125, + "width": 1080, + "height": 341 + }, + "principles": { + "x": 20, + "y": 730.578125, + "width": 1080, + "height": 215.171875 + }, + "products": { + "x": 20, + "y": 957.75, + "width": 1080, + "height": 172 + }, + "evidence": { + "x": 20, + "y": 1141.75, + "width": 1080, + "height": 194 + }, + "takeaway": { + "x": 20, + "y": 1335.75, + "width": 1080, + "height": 68 + } + }, + "sources": { + "docs/10-19-design/10-architecture/10.31-architecture-document-and-decision-contracts.org": "ce28501daff4fe5eaefc763f545645c2fe695a3354bcdde52a3645d827e71156", + "docs/10-19-design/10-architecture/10.34-case-design-review-dossier-draft.org": "3e3f75c8c3fe8565015607cbb4c131c231fa83f076588fdcc43527e5909b1981", + "docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture.d2": "865851b9efa36c9ddadd9d4e5284b4214564d6f57e3e6e85930709a92f7a96fc", + "docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow.d2": "44c4adf2ef884d207c201cb2a1f52dbf0d0eaa3dd3b27450c938f9a54a614e29", + "library/project-organization/objects.ss": "f660d3d90a55a9d7deff8782194dbdc952e85ecfd52463577e8ab1be9905a6b6", + "packages/render/examples/attribution.ts": "58f7914284a69c4ce42db61ec24c06cf9194232ed3402fc7ae12e3ded4187892", + "packages/render/examples/comparison.ts": "3a5f476766cd2873a83cf7664f9f724f99dcf3179d4122e8f05b28c615c6d49c", + "packages/render/examples/library-case.ts": "48c17b7230017b84a6c08db2de031e5c9bc01512a6f59f59abe306640cc0354f", + "packages/render/examples/library-case/architecture-diagram.ts": "fd588a69bb8d415b76fbefc8643cf1ebf3527b6a5eeb2bb20d32bdda5dcc6cbe", + "packages/render/examples/library-case/architecture.ts": "311b3bed75d08c8fd57284feb32f29bd1454585ec4a6a50b8d8e6953cb994c9f", + "packages/render/examples/library-case/dependency-matrix.ts": "aa0227233fa920da8675dd357ad89fef090bc9222434343e0cb974d5a8705848", + "packages/render/examples/library-case/resources.ts": "5c0520c8c1c8017c5031870908406bb1ab2d01ac5a64bab01e0563b2bebe7082", + "packages/render/examples/library-case/style.ts": "879edbe4083a27f2e47af394fe76e190d474028db35a6f97e56853bff3f3c371", + "packages/render/examples/library-case/workflow-declaration.ts": "9ce3f5c5aa4082c0bf5bb863491b14acadb9d10aa10de9e95c039b2f8a87261e", + "packages/render/examples/library-case/workflow-diagram.ts": "a772701acb40b752a5498927d8d9cc59bbd14dc08c04f096fe06b21dd0044dcc", + "packages/render/examples/library-case/workflow.ts": "2e442c8dd33e130b57b49baec66db4eec4d3e9b439ff388acd30b265c5ed09e0", + "packages/render/src/d2-figure.ts": "dfd8821ed04ff45206d6b9e7fac8ba6b47a138426101589a760318143f3ddece", + "packages/render/src/figure.ts": "4f994cc394859027e4986635bffc1b45144a01140e19a1ce6b7b5748fa58bbd7", + "packages/render/src/index.ts": "bc4367c1acbb3b7c3cbf15885a5f3ec78ce36d8216861f44ca1a08d12dc297d4", + "packages/render/src/opensysml.ts": "e4c76a741d2e66b3f403f3a57691493b0f95cbc667bd3f710d09463b4b8087ae", + "profiles/library-formation.ss": "5b124cfda09b5d2d950481ae8f1e6143a135f7f1c0ce0328fd3de5407e732c1f", + "project.sysml": "a1df4b8bd19d07011e1bf7d54b46ef855c66029ac543424743c7e388146bd9b1", + "scenarios/project-formation/func.ss": "b3943c92bf48daac75b456e5a994aedba099226ba6aa232e937dae57e53e1350", + "scenarios/project-formation/types.ss": "49605ccfa1a63d4fa31262f3ba8dee94765b93047fe3d36cc7fb23e4c9539f2b" + }, + "observations": [ + { + "kind": "source-excerpt-observation", + "source": "library/project-organization/objects.ss", + "line": 10, + "excerpt": "OrganizationDeclaration" + }, + { + "kind": "source-excerpt-observation", + "source": "library/project-organization/objects.ss", + "line": 28, + "excerpt": "catalog-value" + }, + { + "kind": "source-excerpt-observation", + "source": "library/project-organization/objects.ss", + "line": 41, + "excerpt": "mapping-value" + }, + { + "kind": "source-excerpt-observation", + "source": "profiles/library-formation.ss", + "line": 47, + "excerpt": "coding-policy:" + }, + { + "kind": "source-excerpt-observation", + "source": "profiles/library-formation.ss", + "line": 48, + "excerpt": "design-policy:" + }, + { + "kind": "source-excerpt-observation", + "source": "profiles/library-formation.ss", + "line": 49, + "excerpt": "resource-methods: '(native quint lean integration)" + }, + { + "kind": "source-excerpt-observation", + "source": "scenarios/project-formation/func.ss", + "line": 132, + "excerpt": "(def (select-formation-profile" + }, + { + "kind": "source-excerpt-observation", + "source": "scenarios/project-formation/func.ss", + "line": 201, + "excerpt": "status: 'capture-blocked" + }, + { + "kind": "source-excerpt-observation", + "source": "scenarios/project-formation/func.ss", + "line": 216, + "excerpt": "capture: #f" + }, + { + "kind": "source-excerpt-observation", + "source": "project.sysml", + "line": 28, + "excerpt": "part 'selection' : 'IndependentProfile'" + }, + { + "kind": "source-excerpt-observation", + "source": "project.sysml", + "line": 27, + "excerpt": "part 'scenarioUse' : 'ProjectScenario'" + }, + { + "kind": "source-excerpt-observation", + "source": "packages/render/src/d2-figure.ts", + "line": 85, + "excerpt": "srcArrow,dstArrow" + }, + { + "kind": "source-excerpt-observation", + "source": "packages/render/src/opensysml.ts", + "line": 68, + "excerpt": "SDK port does not belong to the declared endpoint" + }, + { + "kind": "source-excerpt-observation", + "source": "packages/render/src/index.ts", + "line": 50, + "excerpt": "isDeepStrictEqual(saved,selected)" + }, + { + "kind": "source-excerpt-observation", + "source": "packages/render/src/figure.ts", + "line": 95, + "excerpt": "Model selection differs from captured SDK trace" + } + ] +} \ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture.json.license b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture.json.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture.png b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture.png new file mode 100644 index 0000000..426fc28 Binary files /dev/null and b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture.png differ diff --git a/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture.png.license b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture.png.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-comparison.html b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-comparison.html new file mode 100644 index 0000000..04597af --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-comparison.html @@ -0,0 +1,6 @@ + + +

DE-CASE-01 capture preparation workflow

sketchbook

workflow-sketchbook

node-editor

workflow-node-editor

swimlane

workflow-swimlane

project-owned

workflow-project-owned
\ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-comparison.png b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-comparison.png new file mode 100644 index 0000000..768ac41 Binary files /dev/null and b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-comparison.png differ diff --git a/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-comparison.png.license b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-comparison.png.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-comparison.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-detail.png b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-detail.png new file mode 100644 index 0000000..80c6369 Binary files /dev/null and b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-detail.png differ diff --git a/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-detail.png.license b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-detail.png.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-detail.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-node-editor-detail.png b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-node-editor-detail.png new file mode 100644 index 0000000..e0d1ebb Binary files /dev/null and b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-node-editor-detail.png differ diff --git a/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-node-editor-detail.png.license b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-node-editor-detail.png.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-node-editor-detail.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-node-editor.html b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-node-editor.html new file mode 100644 index 0000000..e6a9caa --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-node-editor.html @@ -0,0 +1,32 @@ + + +DE-CASE-01 capture preparation workflow
+
Workflow / current stop
DETERMINISTIC ENGINEERING / DE-CASE-01

From project intent to traceable use

Confirm origins, select and bind. Retain inputs, outputs and open items at each boundary.

+

1How is a use prepared, and where does it stop?Control order / compact main path

The path shows preparation order; the current source outcome is marked separately.

1
Confirm intentOriginal intent + roles
2
Select ProfileParents / policies
3
Acquire inputsContent / origins / expiry
4
Check bindingScope / parents / origins
5
Prepare CRetain missing inputs
Current return: capture-blocked / capture = #f
+

2What crosses each boundary?

+
BoundaryInputOutput / retained associations
Project confirmationActual intent, account origin and role mandateOriginal sources required for verification; declarations do not authorize
Profile selectionValidated Scope, parent chain and both policiesSelections and actual bindings; retain normalized results
Scenario acquisitionRepository root and project input inventoryActual content, origin observations, lifetime and gaps
Capture preparationSelections, origin authority and method input demandsCurrent output is a blocked report; unique C is not issued
+

What must be checked before proceeding?

Parent and policy associations must agree
Select actual published method bindings
Acquire current project files, origins and lifetime

How are gaps and conflicts retained?

Incomplete original sources: retain origin findings
Missing method footprint: retain required inputs
Do not issue C or promote a candidate to accepted Q
+
Every step needs a basis. Every stop needs an explicit reason.
Basis: Profile and prepare-formation-capture source / no execution acceptanceWorkflow / separate from architecture
\ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-node-editor.json b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-node-editor.json new file mode 100644 index 0000000..fc11f42 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-node-editor.json @@ -0,0 +1,257 @@ +{ + "status": "design explanation / source observations only", + "attribution": { + "copyright": [ + "2026 hardenedlinux Linux Team and Contributors", + "2016 The Inter Project Authors (https://github.com/rsms/inter)" + ], + "license": "LGPL-2.1-or-later AND OFL-1.1" + }, + "observation": { + "canvas": { + "x": 0, + "y": 0, + "width": 1120, + "height": 1108.4375 + }, + "subjects": [ + { + "id": "confirmation", + "role": "default", + "x": 56, + "y": 268.78125, + "width": 179.1875, + "height": 111.15625 + }, + { + "id": "selection", + "role": "default", + "x": 263.1875, + "y": 289.5625, + "width": 179.203125, + "height": 69.578125 + }, + { + "id": "acquisition", + "role": "default", + "x": 470.390625, + "y": 268.78125, + "width": 179.203125, + "height": 111.15625 + }, + { + "id": "association", + "role": "default", + "x": 677.59375, + "y": 268.78125, + "width": 179.203125, + "height": 111.15625 + }, + { + "id": "preparation", + "role": "default", + "x": 884.796875, + "y": 279.96875, + "width": 179.1875, + "height": 88.765625 + } + ], + "relations": [ + "(confirmation -> selection)[0]", + "(selection -> acquisition)[0]", + "(acquisition -> association)[0]", + "(association -> preparation)[0]" + ], + "headings": [] + }, + "canvas": { + "background": "rgba(0, 0, 0, 0)", + "transparent": false + }, + "readability": { + "minimumTextSize": null, + "samples": 0 + }, + "inputSHA256": "61f5ba39f8ad93114fe7c3a879535996317caec4e1ba1e337e67542f21a2b8e6", + "scenes": [], + "svgSHA256": [ + "2d1df6d429f090a39fba4b63c8625770e9e759402a599ecbf9d8397a1507fcfb" + ], + "composedHTMLSHA256": "09de1a70785ca49c3bcfee7d1b87de0d766bf15302f7a45ad6664fe6e87624f8", + "dependencies": { + "@fontsource/inter": "5.3.0", + "@fontsource/kalam": "5.3.0", + "@terrastruct/d2": "0.1.33", + "@xyflow/system": "0.0.83", + "elkjs": "0.12.1", + "parse5": "8.0.1", + "roughjs": "4.6.6", + "valibot": "1.2.0", + "web-worker": "1.5.0" + }, + "regionSHA256": { + "workflow": "42b27640f6b0c7e886abfadfe189beb0dd0227296eeabc3ca0674967cf36be58" + }, + "htmlSHA256": "6a8b289bdf0a86f0d7980961a12af272b21285444330eb76454a947dbb8bcb7b", + "drawing": "precise", + "routing": "xyflow@0.0.83", + "assetSHA256": { + "@fontsource/inter/files/inter-latin-700-normal.woff2": "6f56409fd3d64bb85f7d070bce20749db2d66b6d63cec586cc22d1c761be2491", + "@fontsource/inter/files/inter-latin-400-normal.woff2": "8909904ab6c872eb994093482a88a28eca2cd95912d7b6fecd72103b0dc07edc" + }, + "pngSHA256": "be8b0ccc256190d3b90aa9be9bd246fd85a01ba7ace774aef439c24840fcb3cd", + "browser": "156.0.8078.4", + "width": 2240, + "height": 2218, + "scale": 2, + "bounds": { + "header": { + "x": 20, + "y": 20, + "width": 1080, + "height": 131.78125 + }, + "workflow": { + "x": 20, + "y": 151.78125, + "width": 1080, + "height": 320.15625 + }, + "exchange": { + "x": 20, + "y": 483.9375, + "width": 1080, + "height": 315 + }, + "checks": { + "x": 20, + "y": 810.9375, + "width": 1080, + "height": 185.5 + }, + "takeaway": { + "x": 20, + "y": 996.4375, + "width": 1080, + "height": 68 + } + }, + "sources": { + "docs/10-19-design/10-architecture/10.31-architecture-document-and-decision-contracts.org": "ce28501daff4fe5eaefc763f545645c2fe695a3354bcdde52a3645d827e71156", + "docs/10-19-design/10-architecture/10.34-case-design-review-dossier-draft.org": "3e3f75c8c3fe8565015607cbb4c131c231fa83f076588fdcc43527e5909b1981", + "docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture.d2": "865851b9efa36c9ddadd9d4e5284b4214564d6f57e3e6e85930709a92f7a96fc", + "docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow.d2": "44c4adf2ef884d207c201cb2a1f52dbf0d0eaa3dd3b27450c938f9a54a614e29", + "library/project-organization/objects.ss": "f660d3d90a55a9d7deff8782194dbdc952e85ecfd52463577e8ab1be9905a6b6", + "packages/render/examples/attribution.ts": "58f7914284a69c4ce42db61ec24c06cf9194232ed3402fc7ae12e3ded4187892", + "packages/render/examples/comparison.ts": "3a5f476766cd2873a83cf7664f9f724f99dcf3179d4122e8f05b28c615c6d49c", + "packages/render/examples/library-case.ts": "48c17b7230017b84a6c08db2de031e5c9bc01512a6f59f59abe306640cc0354f", + "packages/render/examples/library-case/architecture-diagram.ts": "fd588a69bb8d415b76fbefc8643cf1ebf3527b6a5eeb2bb20d32bdda5dcc6cbe", + "packages/render/examples/library-case/architecture.ts": "311b3bed75d08c8fd57284feb32f29bd1454585ec4a6a50b8d8e6953cb994c9f", + "packages/render/examples/library-case/dependency-matrix.ts": "aa0227233fa920da8675dd357ad89fef090bc9222434343e0cb974d5a8705848", + "packages/render/examples/library-case/resources.ts": "5c0520c8c1c8017c5031870908406bb1ab2d01ac5a64bab01e0563b2bebe7082", + "packages/render/examples/library-case/style.ts": "879edbe4083a27f2e47af394fe76e190d474028db35a6f97e56853bff3f3c371", + "packages/render/examples/library-case/workflow-declaration.ts": "9ce3f5c5aa4082c0bf5bb863491b14acadb9d10aa10de9e95c039b2f8a87261e", + "packages/render/examples/library-case/workflow-diagram.ts": "a772701acb40b752a5498927d8d9cc59bbd14dc08c04f096fe06b21dd0044dcc", + "packages/render/examples/library-case/workflow.ts": "2e442c8dd33e130b57b49baec66db4eec4d3e9b439ff388acd30b265c5ed09e0", + "packages/render/src/d2-figure.ts": "dfd8821ed04ff45206d6b9e7fac8ba6b47a138426101589a760318143f3ddece", + "packages/render/src/figure.ts": "4f994cc394859027e4986635bffc1b45144a01140e19a1ce6b7b5748fa58bbd7", + "packages/render/src/index.ts": "bc4367c1acbb3b7c3cbf15885a5f3ec78ce36d8216861f44ca1a08d12dc297d4", + "packages/render/src/opensysml.ts": "e4c76a741d2e66b3f403f3a57691493b0f95cbc667bd3f710d09463b4b8087ae", + "profiles/library-formation.ss": "5b124cfda09b5d2d950481ae8f1e6143a135f7f1c0ce0328fd3de5407e732c1f", + "project.sysml": "a1df4b8bd19d07011e1bf7d54b46ef855c66029ac543424743c7e388146bd9b1", + "scenarios/project-formation/func.ss": "b3943c92bf48daac75b456e5a994aedba099226ba6aa232e937dae57e53e1350", + "scenarios/project-formation/types.ss": "49605ccfa1a63d4fa31262f3ba8dee94765b93047fe3d36cc7fb23e4c9539f2b" + }, + "observations": [ + { + "kind": "source-excerpt-observation", + "source": "library/project-organization/objects.ss", + "line": 10, + "excerpt": "OrganizationDeclaration" + }, + { + "kind": "source-excerpt-observation", + "source": "library/project-organization/objects.ss", + "line": 28, + "excerpt": "catalog-value" + }, + { + "kind": "source-excerpt-observation", + "source": "library/project-organization/objects.ss", + "line": 41, + "excerpt": "mapping-value" + }, + { + "kind": "source-excerpt-observation", + "source": "profiles/library-formation.ss", + "line": 47, + "excerpt": "coding-policy:" + }, + { + "kind": "source-excerpt-observation", + "source": "profiles/library-formation.ss", + "line": 48, + "excerpt": "design-policy:" + }, + { + "kind": "source-excerpt-observation", + "source": "profiles/library-formation.ss", + "line": 49, + "excerpt": "resource-methods: '(native quint lean integration)" + }, + { + "kind": "source-excerpt-observation", + "source": "scenarios/project-formation/func.ss", + "line": 132, + "excerpt": "(def (select-formation-profile" + }, + { + "kind": "source-excerpt-observation", + "source": "scenarios/project-formation/func.ss", + "line": 201, + "excerpt": "status: 'capture-blocked" + }, + { + "kind": "source-excerpt-observation", + "source": "scenarios/project-formation/func.ss", + "line": 216, + "excerpt": "capture: #f" + }, + { + "kind": "source-excerpt-observation", + "source": "project.sysml", + "line": 28, + "excerpt": "part 'selection' : 'IndependentProfile'" + }, + { + "kind": "source-excerpt-observation", + "source": "project.sysml", + "line": 27, + "excerpt": "part 'scenarioUse' : 'ProjectScenario'" + }, + { + "kind": "source-excerpt-observation", + "source": "packages/render/src/d2-figure.ts", + "line": 85, + "excerpt": "srcArrow,dstArrow" + }, + { + "kind": "source-excerpt-observation", + "source": "packages/render/src/opensysml.ts", + "line": 68, + "excerpt": "SDK port does not belong to the declared endpoint" + }, + { + "kind": "source-excerpt-observation", + "source": "packages/render/src/index.ts", + "line": 50, + "excerpt": "isDeepStrictEqual(saved,selected)" + }, + { + "kind": "source-excerpt-observation", + "source": "packages/render/src/figure.ts", + "line": 95, + "excerpt": "Model selection differs from captured SDK trace" + } + ] +} \ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-node-editor.json.license b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-node-editor.json.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-node-editor.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-node-editor.png b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-node-editor.png new file mode 100644 index 0000000..3eaa9e9 Binary files /dev/null and b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-node-editor.png differ diff --git a/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-node-editor.png.license b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-node-editor.png.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-node-editor.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-project-owned-detail.png b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-project-owned-detail.png new file mode 100644 index 0000000..75ef900 Binary files /dev/null and b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-project-owned-detail.png differ diff --git a/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-project-owned-detail.png.license b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-project-owned-detail.png.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-project-owned-detail.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-project-owned.html b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-project-owned.html new file mode 100644 index 0000000..3bfc6c9 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-project-owned.html @@ -0,0 +1,32 @@ + + +DE-CASE-01 capture preparation workflow
+
Workflow / current stop
DETERMINISTIC ENGINEERING / DE-CASE-01

From project intent to traceable use

Confirm origins, select and bind. Retain inputs, outputs and open items at each boundary.

+

1How is a use prepared, and where does it stop?Control order / compact main path

The path shows preparation order; the current source outcome is marked separately.

Project intent
1
Confirm intentOriginal intent + roles
Profile selection
2
Select ProfileParents / policies
Scenario preparation
3
Acquire inputsContent / origins / expiry
4
Check bindingScope / parents / origins
5
Prepare CRetain missing inputs
Current return: capture-blocked / capture = #f
+

2What crosses each boundary?

+
BoundaryInputOutput / retained associations
Project confirmationActual intent, account origin and role mandateOriginal sources required for verification; declarations do not authorize
Profile selectionValidated Scope, parent chain and both policiesSelections and actual bindings; retain normalized results
Scenario acquisitionRepository root and project input inventoryActual content, origin observations, lifetime and gaps
Capture preparationSelections, origin authority and method input demandsCurrent output is a blocked report; unique C is not issued
+

What must be checked before proceeding?

Parent and policy associations must agree
Select actual published method bindings
Acquire current project files, origins and lifetime

How are gaps and conflicts retained?

Incomplete original sources: retain origin findings
Missing method footprint: retain required inputs
Do not issue C or promote a candidate to accepted Q
+
Every step needs a basis. Every stop needs an explicit reason.
Basis: Profile and prepare-formation-capture source / no execution acceptanceWorkflow / separate from architecture
\ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-project-owned.json b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-project-owned.json new file mode 100644 index 0000000..ca54f14 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-project-owned.json @@ -0,0 +1,257 @@ +{ + "status": "design explanation / source observations only", + "attribution": { + "copyright": [ + "2026 hardenedlinux Linux Team and Contributors", + "2016 The Inter Project Authors (https://github.com/rsms/inter)" + ], + "license": "LGPL-2.1-or-later AND OFL-1.1" + }, + "observation": { + "canvas": { + "x": 0, + "y": 0, + "width": 1120, + "height": 1186.28125 + }, + "subjects": [ + { + "id": "confirmation", + "role": "default", + "x": 179, + "y": 265.390625, + "width": 172.796875, + "height": 53.78125 + }, + { + "id": "selection", + "role": "default", + "x": 358.796875, + "y": 359.390625, + "width": 172.796875, + "height": 53.78125 + }, + { + "id": "acquisition", + "role": "default", + "x": 538.59375, + "y": 444.09375, + "width": 172.796875, + "height": 71.375 + }, + { + "id": "association", + "role": "default", + "x": 718.390625, + "y": 452.890625, + "width": 172.796875, + "height": 53.78125 + }, + { + "id": "preparation", + "role": "default", + "x": 898.1875, + "y": 452.890625, + "width": 172.8125, + "height": 53.78125 + } + ], + "relations": [ + "(confirmation -> selection)[0]", + "(selection -> acquisition)[0]", + "(acquisition -> association)[0]", + "(association -> preparation)[0]" + ], + "headings": [] + }, + "canvas": { + "background": "rgba(0, 0, 0, 0)", + "transparent": false + }, + "readability": { + "minimumTextSize": null, + "samples": 0 + }, + "inputSHA256": "b6777a5a7bc2e8fd81f7be48879f414809f456edb1f10d7604fdc4f84584cb3b", + "scenes": [], + "svgSHA256": [ + "57a7b06d934ebfe1e4351ccee7e112468c430ffafd17a6f028bc98ac842e3180" + ], + "composedHTMLSHA256": "0f4a6e5b217b90100d34e8266c23ef64b66e4b39369186ca64ddc2869af2f8d1", + "dependencies": { + "@fontsource/inter": "5.3.0", + "@fontsource/kalam": "5.3.0", + "@terrastruct/d2": "0.1.33", + "@xyflow/system": "0.0.83", + "elkjs": "0.12.1", + "parse5": "8.0.1", + "roughjs": "4.6.6", + "valibot": "1.2.0", + "web-worker": "1.5.0" + }, + "regionSHA256": { + "workflow": "b3d0a398e44337997c16fff6ebbf86922ae128aca1d1cd26f09c50c77fde4260" + }, + "htmlSHA256": "f285abface568804ffcdb0381d49802c4a1b1b805b5841293be8984b1f581199", + "drawing": "precise", + "routing": "xyflow@0.0.83", + "assetSHA256": { + "@fontsource/inter/files/inter-latin-400-normal.woff2": "8909904ab6c872eb994093482a88a28eca2cd95912d7b6fecd72103b0dc07edc", + "@fontsource/inter/files/inter-latin-700-normal.woff2": "6f56409fd3d64bb85f7d070bce20749db2d66b6d63cec586cc22d1c761be2491" + }, + "pngSHA256": "f4bb8f0a68e9f15b6326c27c0b5fd9329ba4d191016cb0975ec5127691dec709", + "browser": "156.0.8078.4", + "width": 2240, + "height": 2374, + "scale": 2, + "bounds": { + "header": { + "x": 20, + "y": 20, + "width": 1080, + "height": 130.78125 + }, + "workflow": { + "x": 20, + "y": 150.78125, + "width": 1080, + "height": 444 + }, + "exchange": { + "x": 20, + "y": 606.78125, + "width": 1080, + "height": 274 + }, + "checks": { + "x": 20, + "y": 892.78125, + "width": 1080, + "height": 183.5 + }, + "takeaway": { + "x": 20, + "y": 1076.28125, + "width": 1080, + "height": 68 + } + }, + "sources": { + "docs/10-19-design/10-architecture/10.31-architecture-document-and-decision-contracts.org": "ce28501daff4fe5eaefc763f545645c2fe695a3354bcdde52a3645d827e71156", + "docs/10-19-design/10-architecture/10.34-case-design-review-dossier-draft.org": "3e3f75c8c3fe8565015607cbb4c131c231fa83f076588fdcc43527e5909b1981", + "docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture.d2": "865851b9efa36c9ddadd9d4e5284b4214564d6f57e3e6e85930709a92f7a96fc", + "docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow.d2": "44c4adf2ef884d207c201cb2a1f52dbf0d0eaa3dd3b27450c938f9a54a614e29", + "library/project-organization/objects.ss": "f660d3d90a55a9d7deff8782194dbdc952e85ecfd52463577e8ab1be9905a6b6", + "packages/render/examples/attribution.ts": "58f7914284a69c4ce42db61ec24c06cf9194232ed3402fc7ae12e3ded4187892", + "packages/render/examples/comparison.ts": "3a5f476766cd2873a83cf7664f9f724f99dcf3179d4122e8f05b28c615c6d49c", + "packages/render/examples/library-case.ts": "48c17b7230017b84a6c08db2de031e5c9bc01512a6f59f59abe306640cc0354f", + "packages/render/examples/library-case/architecture-diagram.ts": "fd588a69bb8d415b76fbefc8643cf1ebf3527b6a5eeb2bb20d32bdda5dcc6cbe", + "packages/render/examples/library-case/architecture.ts": "311b3bed75d08c8fd57284feb32f29bd1454585ec4a6a50b8d8e6953cb994c9f", + "packages/render/examples/library-case/dependency-matrix.ts": "aa0227233fa920da8675dd357ad89fef090bc9222434343e0cb974d5a8705848", + "packages/render/examples/library-case/resources.ts": "5c0520c8c1c8017c5031870908406bb1ab2d01ac5a64bab01e0563b2bebe7082", + "packages/render/examples/library-case/style.ts": "879edbe4083a27f2e47af394fe76e190d474028db35a6f97e56853bff3f3c371", + "packages/render/examples/library-case/workflow-declaration.ts": "9ce3f5c5aa4082c0bf5bb863491b14acadb9d10aa10de9e95c039b2f8a87261e", + "packages/render/examples/library-case/workflow-diagram.ts": "a772701acb40b752a5498927d8d9cc59bbd14dc08c04f096fe06b21dd0044dcc", + "packages/render/examples/library-case/workflow.ts": "2e442c8dd33e130b57b49baec66db4eec4d3e9b439ff388acd30b265c5ed09e0", + "packages/render/src/d2-figure.ts": "dfd8821ed04ff45206d6b9e7fac8ba6b47a138426101589a760318143f3ddece", + "packages/render/src/figure.ts": "4f994cc394859027e4986635bffc1b45144a01140e19a1ce6b7b5748fa58bbd7", + "packages/render/src/index.ts": "bc4367c1acbb3b7c3cbf15885a5f3ec78ce36d8216861f44ca1a08d12dc297d4", + "packages/render/src/opensysml.ts": "e4c76a741d2e66b3f403f3a57691493b0f95cbc667bd3f710d09463b4b8087ae", + "profiles/library-formation.ss": "5b124cfda09b5d2d950481ae8f1e6143a135f7f1c0ce0328fd3de5407e732c1f", + "project.sysml": "a1df4b8bd19d07011e1bf7d54b46ef855c66029ac543424743c7e388146bd9b1", + "scenarios/project-formation/func.ss": "b3943c92bf48daac75b456e5a994aedba099226ba6aa232e937dae57e53e1350", + "scenarios/project-formation/types.ss": "49605ccfa1a63d4fa31262f3ba8dee94765b93047fe3d36cc7fb23e4c9539f2b" + }, + "observations": [ + { + "kind": "source-excerpt-observation", + "source": "library/project-organization/objects.ss", + "line": 10, + "excerpt": "OrganizationDeclaration" + }, + { + "kind": "source-excerpt-observation", + "source": "library/project-organization/objects.ss", + "line": 28, + "excerpt": "catalog-value" + }, + { + "kind": "source-excerpt-observation", + "source": "library/project-organization/objects.ss", + "line": 41, + "excerpt": "mapping-value" + }, + { + "kind": "source-excerpt-observation", + "source": "profiles/library-formation.ss", + "line": 47, + "excerpt": "coding-policy:" + }, + { + "kind": "source-excerpt-observation", + "source": "profiles/library-formation.ss", + "line": 48, + "excerpt": "design-policy:" + }, + { + "kind": "source-excerpt-observation", + "source": "profiles/library-formation.ss", + "line": 49, + "excerpt": "resource-methods: '(native quint lean integration)" + }, + { + "kind": "source-excerpt-observation", + "source": "scenarios/project-formation/func.ss", + "line": 132, + "excerpt": "(def (select-formation-profile" + }, + { + "kind": "source-excerpt-observation", + "source": "scenarios/project-formation/func.ss", + "line": 201, + "excerpt": "status: 'capture-blocked" + }, + { + "kind": "source-excerpt-observation", + "source": "scenarios/project-formation/func.ss", + "line": 216, + "excerpt": "capture: #f" + }, + { + "kind": "source-excerpt-observation", + "source": "project.sysml", + "line": 28, + "excerpt": "part 'selection' : 'IndependentProfile'" + }, + { + "kind": "source-excerpt-observation", + "source": "project.sysml", + "line": 27, + "excerpt": "part 'scenarioUse' : 'ProjectScenario'" + }, + { + "kind": "source-excerpt-observation", + "source": "packages/render/src/d2-figure.ts", + "line": 85, + "excerpt": "srcArrow,dstArrow" + }, + { + "kind": "source-excerpt-observation", + "source": "packages/render/src/opensysml.ts", + "line": 68, + "excerpt": "SDK port does not belong to the declared endpoint" + }, + { + "kind": "source-excerpt-observation", + "source": "packages/render/src/index.ts", + "line": 50, + "excerpt": "isDeepStrictEqual(saved,selected)" + }, + { + "kind": "source-excerpt-observation", + "source": "packages/render/src/figure.ts", + "line": 95, + "excerpt": "Model selection differs from captured SDK trace" + } + ] +} \ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-project-owned.json.license b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-project-owned.json.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-project-owned.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-project-owned.png b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-project-owned.png new file mode 100644 index 0000000..2453eda Binary files /dev/null and b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-project-owned.png differ diff --git a/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-project-owned.png.license b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-project-owned.png.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-project-owned.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-sketchbook-detail.png b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-sketchbook-detail.png new file mode 100644 index 0000000..61483fd Binary files /dev/null and b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-sketchbook-detail.png differ diff --git a/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-sketchbook-detail.png.license b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-sketchbook-detail.png.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-sketchbook-detail.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-sketchbook.html b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-sketchbook.html new file mode 100644 index 0000000..752a431 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-sketchbook.html @@ -0,0 +1,32 @@ + + +DE-CASE-01 capture preparation workflow
+
Workflow / current stop
DETERMINISTIC ENGINEERING / DE-CASE-01

From project intent to traceable use

Confirm origins, select and bind. Retain inputs, outputs and open items at each boundary.

+

1How is a use prepared, and where does it stop?Control order / compact main path

The path shows preparation order; the current source outcome is marked separately.

1
Confirm intentOriginal intent + roles
2
Select ProfileParents / policies
3
Acquire inputsContent / origins / expiry
4
Check bindingScope / parents / origins
5
Prepare CRetain missing inputs
Current return: capture-blocked / capture = #f
+

2What crosses each boundary?

+
BoundaryInputOutput / retained associations
Project confirmationActual intent, account origin and role mandateOriginal sources required for verification; declarations do not authorize
Profile selectionValidated Scope, parent chain and both policiesSelections and actual bindings; retain normalized results
Scenario acquisitionRepository root and project input inventoryActual content, origin observations, lifetime and gaps
Capture preparationSelections, origin authority and method input demandsCurrent output is a blocked report; unique C is not issued
+

What must be checked before proceeding?

Parent and policy associations must agree
Select actual published method bindings
Acquire current project files, origins and lifetime

How are gaps and conflicts retained?

Incomplete original sources: retain origin findings
Missing method footprint: retain required inputs
Do not issue C or promote a candidate to accepted Q
+
Every step needs a basis. Every stop needs an explicit reason.
Basis: Profile and prepare-formation-capture source / no execution acceptanceWorkflow / separate from architecture
\ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-sketchbook.json b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-sketchbook.json new file mode 100644 index 0000000..2fdcfa1 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-sketchbook.json @@ -0,0 +1,257 @@ +{ + "status": "design explanation / source observations only", + "attribution": { + "copyright": [ + "2026 hardenedlinux Linux Team and Contributors", + "2014 Indian Type Foundry (info@indiantypefoundry.com)" + ], + "license": "LGPL-2.1-or-later AND OFL-1.1" + }, + "observation": { + "canvas": { + "x": 0, + "y": 0, + "width": 1120, + "height": 1009.046875 + }, + "subjects": [ + { + "id": "confirmation", + "role": "default", + "x": 40, + "y": 264.375, + "width": 185.59375, + "height": 69.578125 + }, + { + "id": "selection", + "role": "default", + "x": 253.59375, + "y": 264.375, + "width": 185.59375, + "height": 69.578125 + }, + { + "id": "acquisition", + "role": "default", + "x": 467.1875, + "y": 254.78125, + "width": 185.609375, + "height": 88.765625 + }, + { + "id": "association", + "role": "default", + "x": 680.796875, + "y": 254.78125, + "width": 185.59375, + "height": 88.765625 + }, + { + "id": "preparation", + "role": "default", + "x": 894.390625, + "y": 264.375, + "width": 185.609375, + "height": 69.578125 + } + ], + "relations": [ + "(confirmation -> selection)[0]", + "(selection -> acquisition)[0]", + "(acquisition -> association)[0]", + "(association -> preparation)[0]" + ], + "headings": [] + }, + "canvas": { + "background": "rgb(250, 247, 238)", + "transparent": false + }, + "readability": { + "minimumTextSize": null, + "samples": 0 + }, + "inputSHA256": "7fac4d7f39f6b0b6fa29b4a51354568ccbc1dae53580eaa12add53b1bcd22f48", + "scenes": [], + "svgSHA256": [ + "576fc9555f1c81dd3f22767e1a367ad32b03606483b27d9a46d0daacd015ede0" + ], + "composedHTMLSHA256": "27102d59c9a9965cee3600f5baed77e3233448a5ea76d442def6c17704a1ea5e", + "dependencies": { + "@fontsource/inter": "5.3.0", + "@fontsource/kalam": "5.3.0", + "@terrastruct/d2": "0.1.33", + "@xyflow/system": "0.0.83", + "elkjs": "0.12.1", + "parse5": "8.0.1", + "roughjs": "4.6.6", + "valibot": "1.2.0", + "web-worker": "1.5.0" + }, + "regionSHA256": { + "workflow": "11fc507af4eedbb6cf1fcd250106a2416881570bff7e5b45c0dc16381ac0ee4a" + }, + "htmlSHA256": "a36aed99b67c478ea99f26b21502a23b0d88d6227ed17347057ec60665402c23", + "drawing": "roughjs@4.6.6", + "routing": "xyflow@0.0.83", + "assetSHA256": { + "@fontsource/kalam/files/kalam-latin-400-normal.woff2": "954410601a823f37e219f7930b7446f86afa15621326a7078d56fb9c910135cb", + "@fontsource/kalam/files/kalam-latin-700-normal.woff2": "252063af6ade8b9a744cde4ddad0fc21ea53b8ba711eed121a0c2e8610ea9c93" + }, + "pngSHA256": "28de4ef8bc9f7ac01499b629af50bbb88ca8d1e4bc1c8e22951a1977969278f6", + "browser": "156.0.8078.4", + "width": 2240, + "height": 2020, + "scale": 2, + "bounds": { + "header": { + "x": 20, + "y": 20, + "width": 1080, + "height": 136.78125 + }, + "workflow": { + "x": 20, + "y": 156.78125, + "width": 1080, + "height": 254.765625 + }, + "exchange": { + "x": 20, + "y": 423.546875, + "width": 1080, + "height": 277 + }, + "checks": { + "x": 20, + "y": 712.546875, + "width": 1080, + "height": 180.5 + }, + "takeaway": { + "x": 20, + "y": 893.046875, + "width": 1080, + "height": 68 + } + }, + "sources": { + "docs/10-19-design/10-architecture/10.31-architecture-document-and-decision-contracts.org": "ce28501daff4fe5eaefc763f545645c2fe695a3354bcdde52a3645d827e71156", + "docs/10-19-design/10-architecture/10.34-case-design-review-dossier-draft.org": "3e3f75c8c3fe8565015607cbb4c131c231fa83f076588fdcc43527e5909b1981", + "docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture.d2": "865851b9efa36c9ddadd9d4e5284b4214564d6f57e3e6e85930709a92f7a96fc", + "docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow.d2": "44c4adf2ef884d207c201cb2a1f52dbf0d0eaa3dd3b27450c938f9a54a614e29", + "library/project-organization/objects.ss": "f660d3d90a55a9d7deff8782194dbdc952e85ecfd52463577e8ab1be9905a6b6", + "packages/render/examples/attribution.ts": "58f7914284a69c4ce42db61ec24c06cf9194232ed3402fc7ae12e3ded4187892", + "packages/render/examples/comparison.ts": "3a5f476766cd2873a83cf7664f9f724f99dcf3179d4122e8f05b28c615c6d49c", + "packages/render/examples/library-case.ts": "48c17b7230017b84a6c08db2de031e5c9bc01512a6f59f59abe306640cc0354f", + "packages/render/examples/library-case/architecture-diagram.ts": "fd588a69bb8d415b76fbefc8643cf1ebf3527b6a5eeb2bb20d32bdda5dcc6cbe", + "packages/render/examples/library-case/architecture.ts": "311b3bed75d08c8fd57284feb32f29bd1454585ec4a6a50b8d8e6953cb994c9f", + "packages/render/examples/library-case/dependency-matrix.ts": "aa0227233fa920da8675dd357ad89fef090bc9222434343e0cb974d5a8705848", + "packages/render/examples/library-case/resources.ts": "5c0520c8c1c8017c5031870908406bb1ab2d01ac5a64bab01e0563b2bebe7082", + "packages/render/examples/library-case/style.ts": "879edbe4083a27f2e47af394fe76e190d474028db35a6f97e56853bff3f3c371", + "packages/render/examples/library-case/workflow-declaration.ts": "9ce3f5c5aa4082c0bf5bb863491b14acadb9d10aa10de9e95c039b2f8a87261e", + "packages/render/examples/library-case/workflow-diagram.ts": "a772701acb40b752a5498927d8d9cc59bbd14dc08c04f096fe06b21dd0044dcc", + "packages/render/examples/library-case/workflow.ts": "2e442c8dd33e130b57b49baec66db4eec4d3e9b439ff388acd30b265c5ed09e0", + "packages/render/src/d2-figure.ts": "dfd8821ed04ff45206d6b9e7fac8ba6b47a138426101589a760318143f3ddece", + "packages/render/src/figure.ts": "4f994cc394859027e4986635bffc1b45144a01140e19a1ce6b7b5748fa58bbd7", + "packages/render/src/index.ts": "bc4367c1acbb3b7c3cbf15885a5f3ec78ce36d8216861f44ca1a08d12dc297d4", + "packages/render/src/opensysml.ts": "e4c76a741d2e66b3f403f3a57691493b0f95cbc667bd3f710d09463b4b8087ae", + "profiles/library-formation.ss": "5b124cfda09b5d2d950481ae8f1e6143a135f7f1c0ce0328fd3de5407e732c1f", + "project.sysml": "a1df4b8bd19d07011e1bf7d54b46ef855c66029ac543424743c7e388146bd9b1", + "scenarios/project-formation/func.ss": "b3943c92bf48daac75b456e5a994aedba099226ba6aa232e937dae57e53e1350", + "scenarios/project-formation/types.ss": "49605ccfa1a63d4fa31262f3ba8dee94765b93047fe3d36cc7fb23e4c9539f2b" + }, + "observations": [ + { + "kind": "source-excerpt-observation", + "source": "library/project-organization/objects.ss", + "line": 10, + "excerpt": "OrganizationDeclaration" + }, + { + "kind": "source-excerpt-observation", + "source": "library/project-organization/objects.ss", + "line": 28, + "excerpt": "catalog-value" + }, + { + "kind": "source-excerpt-observation", + "source": "library/project-organization/objects.ss", + "line": 41, + "excerpt": "mapping-value" + }, + { + "kind": "source-excerpt-observation", + "source": "profiles/library-formation.ss", + "line": 47, + "excerpt": "coding-policy:" + }, + { + "kind": "source-excerpt-observation", + "source": "profiles/library-formation.ss", + "line": 48, + "excerpt": "design-policy:" + }, + { + "kind": "source-excerpt-observation", + "source": "profiles/library-formation.ss", + "line": 49, + "excerpt": "resource-methods: '(native quint lean integration)" + }, + { + "kind": "source-excerpt-observation", + "source": "scenarios/project-formation/func.ss", + "line": 132, + "excerpt": "(def (select-formation-profile" + }, + { + "kind": "source-excerpt-observation", + "source": "scenarios/project-formation/func.ss", + "line": 201, + "excerpt": "status: 'capture-blocked" + }, + { + "kind": "source-excerpt-observation", + "source": "scenarios/project-formation/func.ss", + "line": 216, + "excerpt": "capture: #f" + }, + { + "kind": "source-excerpt-observation", + "source": "project.sysml", + "line": 28, + "excerpt": "part 'selection' : 'IndependentProfile'" + }, + { + "kind": "source-excerpt-observation", + "source": "project.sysml", + "line": 27, + "excerpt": "part 'scenarioUse' : 'ProjectScenario'" + }, + { + "kind": "source-excerpt-observation", + "source": "packages/render/src/d2-figure.ts", + "line": 85, + "excerpt": "srcArrow,dstArrow" + }, + { + "kind": "source-excerpt-observation", + "source": "packages/render/src/opensysml.ts", + "line": 68, + "excerpt": "SDK port does not belong to the declared endpoint" + }, + { + "kind": "source-excerpt-observation", + "source": "packages/render/src/index.ts", + "line": 50, + "excerpt": "isDeepStrictEqual(saved,selected)" + }, + { + "kind": "source-excerpt-observation", + "source": "packages/render/src/figure.ts", + "line": 95, + "excerpt": "Model selection differs from captured SDK trace" + } + ] +} \ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-sketchbook.json.license b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-sketchbook.json.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-sketchbook.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-sketchbook.png b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-sketchbook.png new file mode 100644 index 0000000..0aed329 Binary files /dev/null and b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-sketchbook.png differ diff --git a/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-sketchbook.png.license b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-sketchbook.png.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-sketchbook.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-swimlane-detail.png b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-swimlane-detail.png new file mode 100644 index 0000000..2fe1001 Binary files /dev/null and b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-swimlane-detail.png differ diff --git a/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-swimlane-detail.png.license b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-swimlane-detail.png.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-swimlane-detail.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-swimlane.html b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-swimlane.html new file mode 100644 index 0000000..53a361c --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-swimlane.html @@ -0,0 +1,32 @@ + + +DE-CASE-01 capture preparation workflow
+
Workflow / current stop
DETERMINISTIC ENGINEERING / DE-CASE-01

From project intent to traceable use

Confirm origins, select and bind. Retain inputs, outputs and open items at each boundary.

+

1How is a use prepared, and where does it stop?Control order / compact main path

The path shows preparation order; the current source outcome is marked separately.

Project intent
1
Confirm intentOriginal intent + roles
Profile selection
2
Select ProfileParents / policies
Scenario preparation
3
Acquire inputsContent / origins / expiry
4
Check bindingScope / parents / origins
5
Prepare CRetain missing inputs
Current return: capture-blocked / capture = #f
+

2What crosses each boundary?

+
BoundaryInputOutput / retained associations
Project confirmationActual intent, account origin and role mandateOriginal sources required for verification; declarations do not authorize
Profile selectionValidated Scope, parent chain and both policiesSelections and actual bindings; retain normalized results
Scenario acquisitionRepository root and project input inventoryActual content, origin observations, lifetime and gaps
Capture preparationSelections, origin authority and method input demandsCurrent output is a blocked report; unique C is not issued
+

What must be checked before proceeding?

Parent and policy associations must agree
Select actual published method bindings
Acquire current project files, origins and lifetime

How are gaps and conflicts retained?

Incomplete original sources: retain origin findings
Missing method footprint: retain required inputs
Do not issue C or promote a candidate to accepted Q
+
Every step needs a basis. Every stop needs an explicit reason.
Basis: Profile and prepare-formation-capture source / no execution acceptanceWorkflow / separate from architecture
\ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-swimlane.json b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-swimlane.json new file mode 100644 index 0000000..3718a94 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-swimlane.json @@ -0,0 +1,257 @@ +{ + "status": "design explanation / source observations only", + "attribution": { + "copyright": [ + "2026 hardenedlinux Linux Team and Contributors", + "2016 The Inter Project Authors (https://github.com/rsms/inter)" + ], + "license": "LGPL-2.1-or-later AND OFL-1.1" + }, + "observation": { + "canvas": { + "x": 0, + "y": 0, + "width": 1120, + "height": 1227.28125 + }, + "subjects": [ + { + "id": "confirmation", + "role": "default", + "x": 179, + "y": 265.390625, + "width": 172.796875, + "height": 53.78125 + }, + { + "id": "selection", + "role": "default", + "x": 358.796875, + "y": 359.390625, + "width": 172.796875, + "height": 53.78125 + }, + { + "id": "acquisition", + "role": "default", + "x": 538.59375, + "y": 444.09375, + "width": 172.796875, + "height": 71.375 + }, + { + "id": "association", + "role": "default", + "x": 718.390625, + "y": 444.09375, + "width": 172.796875, + "height": 71.375 + }, + { + "id": "preparation", + "role": "default", + "x": 898.1875, + "y": 452.890625, + "width": 172.8125, + "height": 53.78125 + } + ], + "relations": [ + "(confirmation -> selection)[0]", + "(selection -> acquisition)[0]", + "(acquisition -> association)[0]", + "(association -> preparation)[0]" + ], + "headings": [] + }, + "canvas": { + "background": "rgba(0, 0, 0, 0)", + "transparent": false + }, + "readability": { + "minimumTextSize": null, + "samples": 0 + }, + "inputSHA256": "2cdf4132b07c6e5f651e1d491768982cccf1ef72b098001150df860c71752152", + "scenes": [], + "svgSHA256": [ + "14d15f72e8a0a1825d7253c66f83f2554386f010715e3c423a341bac71475f6c" + ], + "composedHTMLSHA256": "6a8f6686a20a851f83f12207546a5321261ec00ee8d65a2e012da3e17e6306b6", + "dependencies": { + "@fontsource/inter": "5.3.0", + "@fontsource/kalam": "5.3.0", + "@terrastruct/d2": "0.1.33", + "@xyflow/system": "0.0.83", + "elkjs": "0.12.1", + "parse5": "8.0.1", + "roughjs": "4.6.6", + "valibot": "1.2.0", + "web-worker": "1.5.0" + }, + "regionSHA256": { + "workflow": "014ac3ef0f382022bf0481b44fc0f6bfd6267ca2c3adecbded2d48330176008b" + }, + "htmlSHA256": "d1a565b6d2369cbd6c920062a55c40a9e5b5ce8f02f4695270c61fe1e40dd579", + "drawing": "precise", + "routing": "xyflow@0.0.83", + "assetSHA256": { + "@fontsource/inter/files/inter-latin-700-normal.woff2": "6f56409fd3d64bb85f7d070bce20749db2d66b6d63cec586cc22d1c761be2491", + "@fontsource/inter/files/inter-latin-400-normal.woff2": "8909904ab6c872eb994093482a88a28eca2cd95912d7b6fecd72103b0dc07edc" + }, + "pngSHA256": "e65def9127504a30994c7657644f3c167d31efc178577953f57bb6a3b73b6b22", + "browser": "156.0.8078.4", + "width": 2240, + "height": 2456, + "scale": 2, + "bounds": { + "header": { + "x": 20, + "y": 20, + "width": 1080, + "height": 131.78125 + }, + "workflow": { + "x": 20, + "y": 151.78125, + "width": 1080, + "height": 443 + }, + "exchange": { + "x": 20, + "y": 606.78125, + "width": 1080, + "height": 315 + }, + "checks": { + "x": 20, + "y": 933.78125, + "width": 1080, + "height": 181.5 + }, + "takeaway": { + "x": 20, + "y": 1115.28125, + "width": 1080, + "height": 68 + } + }, + "sources": { + "docs/10-19-design/10-architecture/10.31-architecture-document-and-decision-contracts.org": "ce28501daff4fe5eaefc763f545645c2fe695a3354bcdde52a3645d827e71156", + "docs/10-19-design/10-architecture/10.34-case-design-review-dossier-draft.org": "3e3f75c8c3fe8565015607cbb4c131c231fa83f076588fdcc43527e5909b1981", + "docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture.d2": "865851b9efa36c9ddadd9d4e5284b4214564d6f57e3e6e85930709a92f7a96fc", + "docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow.d2": "44c4adf2ef884d207c201cb2a1f52dbf0d0eaa3dd3b27450c938f9a54a614e29", + "library/project-organization/objects.ss": "f660d3d90a55a9d7deff8782194dbdc952e85ecfd52463577e8ab1be9905a6b6", + "packages/render/examples/attribution.ts": "58f7914284a69c4ce42db61ec24c06cf9194232ed3402fc7ae12e3ded4187892", + "packages/render/examples/comparison.ts": "3a5f476766cd2873a83cf7664f9f724f99dcf3179d4122e8f05b28c615c6d49c", + "packages/render/examples/library-case.ts": "48c17b7230017b84a6c08db2de031e5c9bc01512a6f59f59abe306640cc0354f", + "packages/render/examples/library-case/architecture-diagram.ts": "fd588a69bb8d415b76fbefc8643cf1ebf3527b6a5eeb2bb20d32bdda5dcc6cbe", + "packages/render/examples/library-case/architecture.ts": "311b3bed75d08c8fd57284feb32f29bd1454585ec4a6a50b8d8e6953cb994c9f", + "packages/render/examples/library-case/dependency-matrix.ts": "aa0227233fa920da8675dd357ad89fef090bc9222434343e0cb974d5a8705848", + "packages/render/examples/library-case/resources.ts": "5c0520c8c1c8017c5031870908406bb1ab2d01ac5a64bab01e0563b2bebe7082", + "packages/render/examples/library-case/style.ts": "879edbe4083a27f2e47af394fe76e190d474028db35a6f97e56853bff3f3c371", + "packages/render/examples/library-case/workflow-declaration.ts": "9ce3f5c5aa4082c0bf5bb863491b14acadb9d10aa10de9e95c039b2f8a87261e", + "packages/render/examples/library-case/workflow-diagram.ts": "a772701acb40b752a5498927d8d9cc59bbd14dc08c04f096fe06b21dd0044dcc", + "packages/render/examples/library-case/workflow.ts": "2e442c8dd33e130b57b49baec66db4eec4d3e9b439ff388acd30b265c5ed09e0", + "packages/render/src/d2-figure.ts": "dfd8821ed04ff45206d6b9e7fac8ba6b47a138426101589a760318143f3ddece", + "packages/render/src/figure.ts": "4f994cc394859027e4986635bffc1b45144a01140e19a1ce6b7b5748fa58bbd7", + "packages/render/src/index.ts": "bc4367c1acbb3b7c3cbf15885a5f3ec78ce36d8216861f44ca1a08d12dc297d4", + "packages/render/src/opensysml.ts": "e4c76a741d2e66b3f403f3a57691493b0f95cbc667bd3f710d09463b4b8087ae", + "profiles/library-formation.ss": "5b124cfda09b5d2d950481ae8f1e6143a135f7f1c0ce0328fd3de5407e732c1f", + "project.sysml": "a1df4b8bd19d07011e1bf7d54b46ef855c66029ac543424743c7e388146bd9b1", + "scenarios/project-formation/func.ss": "b3943c92bf48daac75b456e5a994aedba099226ba6aa232e937dae57e53e1350", + "scenarios/project-formation/types.ss": "49605ccfa1a63d4fa31262f3ba8dee94765b93047fe3d36cc7fb23e4c9539f2b" + }, + "observations": [ + { + "kind": "source-excerpt-observation", + "source": "library/project-organization/objects.ss", + "line": 10, + "excerpt": "OrganizationDeclaration" + }, + { + "kind": "source-excerpt-observation", + "source": "library/project-organization/objects.ss", + "line": 28, + "excerpt": "catalog-value" + }, + { + "kind": "source-excerpt-observation", + "source": "library/project-organization/objects.ss", + "line": 41, + "excerpt": "mapping-value" + }, + { + "kind": "source-excerpt-observation", + "source": "profiles/library-formation.ss", + "line": 47, + "excerpt": "coding-policy:" + }, + { + "kind": "source-excerpt-observation", + "source": "profiles/library-formation.ss", + "line": 48, + "excerpt": "design-policy:" + }, + { + "kind": "source-excerpt-observation", + "source": "profiles/library-formation.ss", + "line": 49, + "excerpt": "resource-methods: '(native quint lean integration)" + }, + { + "kind": "source-excerpt-observation", + "source": "scenarios/project-formation/func.ss", + "line": 132, + "excerpt": "(def (select-formation-profile" + }, + { + "kind": "source-excerpt-observation", + "source": "scenarios/project-formation/func.ss", + "line": 201, + "excerpt": "status: 'capture-blocked" + }, + { + "kind": "source-excerpt-observation", + "source": "scenarios/project-formation/func.ss", + "line": 216, + "excerpt": "capture: #f" + }, + { + "kind": "source-excerpt-observation", + "source": "project.sysml", + "line": 28, + "excerpt": "part 'selection' : 'IndependentProfile'" + }, + { + "kind": "source-excerpt-observation", + "source": "project.sysml", + "line": 27, + "excerpt": "part 'scenarioUse' : 'ProjectScenario'" + }, + { + "kind": "source-excerpt-observation", + "source": "packages/render/src/d2-figure.ts", + "line": 85, + "excerpt": "srcArrow,dstArrow" + }, + { + "kind": "source-excerpt-observation", + "source": "packages/render/src/opensysml.ts", + "line": 68, + "excerpt": "SDK port does not belong to the declared endpoint" + }, + { + "kind": "source-excerpt-observation", + "source": "packages/render/src/index.ts", + "line": 50, + "excerpt": "isDeepStrictEqual(saved,selected)" + }, + { + "kind": "source-excerpt-observation", + "source": "packages/render/src/figure.ts", + "line": 95, + "excerpt": "Model selection differs from captured SDK trace" + } + ] +} \ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-swimlane.json.license b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-swimlane.json.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-swimlane.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-swimlane.png b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-swimlane.png new file mode 100644 index 0000000..abbe2d9 Binary files /dev/null and b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-swimlane.png differ diff --git a/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-swimlane.png.license b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-swimlane.png.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow-swimlane.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow.d2 b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow.d2 new file mode 100644 index 0000000..f496d65 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow.d2 @@ -0,0 +1,222 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + +# Declared Questions and content for the actual DE-CASE-01 case. +# Source observations only; no issued C, accepted Q or review R. +vars: { + d2-config: { + layout-engine: elk + data: { + # Application declarations travel through the official graph.data interface. + figure: |json + { + "title": "DE-CASE-01 capture preparation workflow", + "purpose": "workflow", + "kind": "flow", + "language": "en", + "width": 1120, + "primary": "progress", + "questions": [ + { + "ref": "progress", + "text": "How is a use prepared, and where does it stop?", + "focusRefs": [ + "profile", + "scenario", + "capture-stop" + ] + }, + { + "ref": "exchange", + "text": "What crosses each boundary?", + "focusRefs": [ + "profile", + "scenario", + "types" + ] + }, + { + "ref": "stops", + "text": "What must be checked before proceeding?", + "focusRefs": [ + "scenario", + "capture-stop" + ] + } + ], + "references": { + "library": "library/project-organization/objects.ss", + "profile": "profiles/library-formation.ss", + "scenario": "scenarios/project-formation/func.ss", + "capture-stop": "scenarios/project-formation/func.ss", + "model": "project.sysml", + "documents": "docs/10-19-design/10-architecture/10.31-architecture-document-and-decision-contracts.org", + "decisions": "docs/10-19-design/10-architecture/10.34-case-design-review-dossier-draft.org", + "types": "scenarios/project-formation/types.ss" + }, + "basis": { + "captureRef": "design-candidate:DE-CASE-01/rendering", + "modelRefs": [ + "project.sysml" + ], + "obligationRefs": [ + "docs/10-19-design/10-architecture/10.31-architecture-document-and-decision-contracts.org" + ], + "evidenceRefs": [] + }, + "copy": { + "badge": "Workflow / current stop", + "eyebrow": "DETERMINISTIC ENGINEERING / DE-CASE-01", + "title": "From project intent to ", + "emphasis": "traceable use", + "annotation-01": "Confirm origins, select and bind. Retain inputs, outputs and open items at each boundary.", + "annotation-02": "Control order / compact main path", + "annotation-03": "The path shows preparation order; the current source outcome is marked separately.", + "confirm-label": "Confirm intent", + "annotation-04": "Original intent + roles", + "select-label": "Select Profile", + "annotation-05": "Parents / policies", + "acquire-label": "Acquire inputs", + "annotation-06": "Content / origins / expiry", + "check-label": "Check binding", + "annotation-07": "Scope / parents / origins", + "prepare-label": "Prepare C", + "annotation-08": "Retain missing inputs", + "annotation-09": "Current return: capture-blocked / capture = #f", + "annotation-10": "Boundary", + "annotation-11": "Input", + "annotation-12": "Output / retained associations", + "annotation-13": "Project confirmation", + "annotation-14": "Actual intent, account origin and role mandate", + "annotation-15": "Original sources required for verification; declarations do not authorize", + "annotation-16": "Profile selection", + "annotation-17": "Validated Scope, parent chain and both policies", + "annotation-18": "Selections and actual bindings; retain normalized results", + "annotation-19": "Scenario acquisition", + "annotation-20": "Repository root and project input inventory", + "annotation-21": "Actual content, origin observations, lifetime and gaps", + "annotation-22": "Capture preparation", + "annotation-23": "Selections, origin authority and method input demands", + "annotation-24": "Current output is a blocked report; unique C is not issued", + "annotation-25": "Parent and policy associations must agree", + "annotation-26": "Select actual published method bindings", + "annotation-27": "Acquire current project files, origins and lifetime", + "annotation-28": "How are gaps and conflicts retained?", + "annotation-29": "Incomplete original sources: retain origin findings", + "annotation-30": "Missing method footprint: retain required inputs", + "annotation-31": "Do not issue C or promote a candidate to accepted Q", + "annotation-32": "Every step needs a basis. Every stop needs an explicit reason.", + "annotation-33": "Basis: Profile and prepare-formation-capture source / no execution acceptance", + "annotation-34": "Workflow / separate from architecture" + }, + "themes": [ + "blueprint", + "compact" + ], + "variants": [ + { + "name": "sketchbook", + "themes": [ + "sketchbook", + "compact" + ] + }, + { + "name": "node-editor", + "themes": [ + "blueprint", + "node-editor", + "compact" + ] + }, + { + "name": "swimlane", + "themes": [ + "blueprint", + "compact" + ], + "layout": "swimlane" + }, + { + "name": "project-owned", + "kind": "capture-handoff", + "layout": "swimlane", + "themes": [ + "field-notes", + "workbench", + "compact" + ], + "icons": [ + "engineering", + "repo" + ] + } + ], + "icons": [ + "engineering" + ], + "presentation": { + "flow": { + "lanes": [ + { + "id": "intent", + "label": "Project intent" + }, + { + "id": "profile", + "label": "Profile selection" + }, + { + "id": "scenario", + "label": "Scenario preparation" + } + ], + "steps": [ + { + "node": "confirmation", + "lane": "intent", + "title": "confirm-label", + "detail": "annotation-04", + "icon": "question" + }, + { + "node": "selection", + "lane": "profile", + "title": "select-label", + "detail": "annotation-05", + "icon": "selection" + }, + { + "node": "acquisition", + "lane": "scenario", + "title": "acquire-label", + "detail": "annotation-06", + "icon": "document" + }, + { + "node": "association", + "lane": "scenario", + "title": "check-label", + "detail": "annotation-07", + "icon": "reference" + }, + { + "node": "preparation", + "lane": "scenario", + "title": "prepare-label", + "detail": "annotation-08", + "icon": "capture" + } + ] + } + } + } + | + } + } +} +direction: right +confirmation -> selection -> acquisition -> association -> preparation +preparation -> blocked: current source outcome +blocked: "capture-blocked / capture = #f" diff --git a/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow.html b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow.html new file mode 100644 index 0000000..173372b --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow.html @@ -0,0 +1,32 @@ + + +DE-CASE-01 capture preparation workflow
+
Workflow / current stop
DETERMINISTIC ENGINEERING / DE-CASE-01

From project intent to traceable use

Confirm origins, select and bind. Retain inputs, outputs and open items at each boundary.

+

1How is a use prepared, and where does it stop?Control order / compact main path

The path shows preparation order; the current source outcome is marked separately.

1
Confirm intentOriginal intent + roles
2
Select ProfileParents / policies
3
Acquire inputsContent / origins / expiry
4
Check bindingScope / parents / origins
5
Prepare CRetain missing inputs
Current return: capture-blocked / capture = #f
+

2What crosses each boundary?

+
BoundaryInputOutput / retained associations
Project confirmationActual intent, account origin and role mandateOriginal sources required for verification; declarations do not authorize
Profile selectionValidated Scope, parent chain and both policiesSelections and actual bindings; retain normalized results
Scenario acquisitionRepository root and project input inventoryActual content, origin observations, lifetime and gaps
Capture preparationSelections, origin authority and method input demandsCurrent output is a blocked report; unique C is not issued
+

What must be checked before proceeding?

Parent and policy associations must agree
Select actual published method bindings
Acquire current project files, origins and lifetime

How are gaps and conflicts retained?

Incomplete original sources: retain origin findings
Missing method footprint: retain required inputs
Do not issue C or promote a candidate to accepted Q
+
Every step needs a basis. Every stop needs an explicit reason.
Basis: Profile and prepare-formation-capture source / no execution acceptanceWorkflow / separate from architecture
\ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow.json b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow.json new file mode 100644 index 0000000..38eb667 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow.json @@ -0,0 +1,257 @@ +{ + "status": "design explanation / source observations only", + "attribution": { + "copyright": [ + "2026 hardenedlinux Linux Team and Contributors", + "2016 The Inter Project Authors (https://github.com/rsms/inter)" + ], + "license": "LGPL-2.1-or-later AND OFL-1.1" + }, + "observation": { + "canvas": { + "x": 0, + "y": 0, + "width": 1120, + "height": 1056.4375 + }, + "subjects": [ + { + "id": "confirmation", + "role": "default", + "x": 41, + "y": 244.78125, + "width": 185.1875, + "height": 111.15625 + }, + { + "id": "selection", + "role": "default", + "x": 254.1875, + "y": 265.5625, + "width": 185.203125, + "height": 69.578125 + }, + { + "id": "acquisition", + "role": "default", + "x": 467.390625, + "y": 244.78125, + "width": 185.203125, + "height": 111.15625 + }, + { + "id": "association", + "role": "default", + "x": 680.59375, + "y": 244.78125, + "width": 185.203125, + "height": 111.15625 + }, + { + "id": "preparation", + "role": "default", + "x": 893.796875, + "y": 255.96875, + "width": 185.1875, + "height": 88.765625 + } + ], + "relations": [ + "(confirmation -> selection)[0]", + "(selection -> acquisition)[0]", + "(acquisition -> association)[0]", + "(association -> preparation)[0]" + ], + "headings": [] + }, + "canvas": { + "background": "rgba(0, 0, 0, 0)", + "transparent": false + }, + "readability": { + "minimumTextSize": null, + "samples": 0 + }, + "inputSHA256": "98e43fc71481d96bc2bde2f1446518e446753d9f1816753c49e8782176153216", + "scenes": [], + "svgSHA256": [ + "a6e25835274361679addbfbff2c32586e53929e32807554f46c7cf757642323d" + ], + "composedHTMLSHA256": "e251e81574b0187f8b0c69c97218f5ef6db88401dfbb84fe6a0a722ab0a6c6ae", + "dependencies": { + "@fontsource/inter": "5.3.0", + "@fontsource/kalam": "5.3.0", + "@terrastruct/d2": "0.1.33", + "@xyflow/system": "0.0.83", + "elkjs": "0.12.1", + "parse5": "8.0.1", + "roughjs": "4.6.6", + "valibot": "1.2.0", + "web-worker": "1.5.0" + }, + "regionSHA256": { + "workflow": "a7510c1836a71ed9f2e387b698f167bbbd8e29192917d50284b4b2a538a4e73e" + }, + "htmlSHA256": "407c4f651c4c89730ce46c79fef90e8414348b9d9766b46dc62c676727d35c9e", + "drawing": "precise", + "routing": "xyflow@0.0.83", + "assetSHA256": { + "@fontsource/inter/files/inter-latin-400-normal.woff2": "8909904ab6c872eb994093482a88a28eca2cd95912d7b6fecd72103b0dc07edc", + "@fontsource/inter/files/inter-latin-700-normal.woff2": "6f56409fd3d64bb85f7d070bce20749db2d66b6d63cec586cc22d1c761be2491" + }, + "pngSHA256": "04890b275b4289d5243618dea5c2edb07b247261e0745982aca205fb643e16d0", + "browser": "156.0.8078.4", + "width": 2240, + "height": 2114, + "scale": 2, + "bounds": { + "header": { + "x": 20, + "y": 20, + "width": 1080, + "height": 131.78125 + }, + "workflow": { + "x": 20, + "y": 151.78125, + "width": 1080, + "height": 272.15625 + }, + "exchange": { + "x": 20, + "y": 435.9375, + "width": 1080, + "height": 315 + }, + "checks": { + "x": 20, + "y": 762.9375, + "width": 1080, + "height": 181.5 + }, + "takeaway": { + "x": 20, + "y": 944.4375, + "width": 1080, + "height": 68 + } + }, + "sources": { + "docs/10-19-design/10-architecture/10.31-architecture-document-and-decision-contracts.org": "ce28501daff4fe5eaefc763f545645c2fe695a3354bcdde52a3645d827e71156", + "docs/10-19-design/10-architecture/10.34-case-design-review-dossier-draft.org": "3e3f75c8c3fe8565015607cbb4c131c231fa83f076588fdcc43527e5909b1981", + "docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture.d2": "865851b9efa36c9ddadd9d4e5284b4214564d6f57e3e6e85930709a92f7a96fc", + "docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow.d2": "44c4adf2ef884d207c201cb2a1f52dbf0d0eaa3dd3b27450c938f9a54a614e29", + "library/project-organization/objects.ss": "f660d3d90a55a9d7deff8782194dbdc952e85ecfd52463577e8ab1be9905a6b6", + "packages/render/examples/attribution.ts": "58f7914284a69c4ce42db61ec24c06cf9194232ed3402fc7ae12e3ded4187892", + "packages/render/examples/comparison.ts": "3a5f476766cd2873a83cf7664f9f724f99dcf3179d4122e8f05b28c615c6d49c", + "packages/render/examples/library-case.ts": "48c17b7230017b84a6c08db2de031e5c9bc01512a6f59f59abe306640cc0354f", + "packages/render/examples/library-case/architecture-diagram.ts": "fd588a69bb8d415b76fbefc8643cf1ebf3527b6a5eeb2bb20d32bdda5dcc6cbe", + "packages/render/examples/library-case/architecture.ts": "311b3bed75d08c8fd57284feb32f29bd1454585ec4a6a50b8d8e6953cb994c9f", + "packages/render/examples/library-case/dependency-matrix.ts": "aa0227233fa920da8675dd357ad89fef090bc9222434343e0cb974d5a8705848", + "packages/render/examples/library-case/resources.ts": "5c0520c8c1c8017c5031870908406bb1ab2d01ac5a64bab01e0563b2bebe7082", + "packages/render/examples/library-case/style.ts": "879edbe4083a27f2e47af394fe76e190d474028db35a6f97e56853bff3f3c371", + "packages/render/examples/library-case/workflow-declaration.ts": "9ce3f5c5aa4082c0bf5bb863491b14acadb9d10aa10de9e95c039b2f8a87261e", + "packages/render/examples/library-case/workflow-diagram.ts": "a772701acb40b752a5498927d8d9cc59bbd14dc08c04f096fe06b21dd0044dcc", + "packages/render/examples/library-case/workflow.ts": "2e442c8dd33e130b57b49baec66db4eec4d3e9b439ff388acd30b265c5ed09e0", + "packages/render/src/d2-figure.ts": "dfd8821ed04ff45206d6b9e7fac8ba6b47a138426101589a760318143f3ddece", + "packages/render/src/figure.ts": "4f994cc394859027e4986635bffc1b45144a01140e19a1ce6b7b5748fa58bbd7", + "packages/render/src/index.ts": "bc4367c1acbb3b7c3cbf15885a5f3ec78ce36d8216861f44ca1a08d12dc297d4", + "packages/render/src/opensysml.ts": "e4c76a741d2e66b3f403f3a57691493b0f95cbc667bd3f710d09463b4b8087ae", + "profiles/library-formation.ss": "5b124cfda09b5d2d950481ae8f1e6143a135f7f1c0ce0328fd3de5407e732c1f", + "project.sysml": "a1df4b8bd19d07011e1bf7d54b46ef855c66029ac543424743c7e388146bd9b1", + "scenarios/project-formation/func.ss": "b3943c92bf48daac75b456e5a994aedba099226ba6aa232e937dae57e53e1350", + "scenarios/project-formation/types.ss": "49605ccfa1a63d4fa31262f3ba8dee94765b93047fe3d36cc7fb23e4c9539f2b" + }, + "observations": [ + { + "kind": "source-excerpt-observation", + "source": "library/project-organization/objects.ss", + "line": 10, + "excerpt": "OrganizationDeclaration" + }, + { + "kind": "source-excerpt-observation", + "source": "library/project-organization/objects.ss", + "line": 28, + "excerpt": "catalog-value" + }, + { + "kind": "source-excerpt-observation", + "source": "library/project-organization/objects.ss", + "line": 41, + "excerpt": "mapping-value" + }, + { + "kind": "source-excerpt-observation", + "source": "profiles/library-formation.ss", + "line": 47, + "excerpt": "coding-policy:" + }, + { + "kind": "source-excerpt-observation", + "source": "profiles/library-formation.ss", + "line": 48, + "excerpt": "design-policy:" + }, + { + "kind": "source-excerpt-observation", + "source": "profiles/library-formation.ss", + "line": 49, + "excerpt": "resource-methods: '(native quint lean integration)" + }, + { + "kind": "source-excerpt-observation", + "source": "scenarios/project-formation/func.ss", + "line": 132, + "excerpt": "(def (select-formation-profile" + }, + { + "kind": "source-excerpt-observation", + "source": "scenarios/project-formation/func.ss", + "line": 201, + "excerpt": "status: 'capture-blocked" + }, + { + "kind": "source-excerpt-observation", + "source": "scenarios/project-formation/func.ss", + "line": 216, + "excerpt": "capture: #f" + }, + { + "kind": "source-excerpt-observation", + "source": "project.sysml", + "line": 28, + "excerpt": "part 'selection' : 'IndependentProfile'" + }, + { + "kind": "source-excerpt-observation", + "source": "project.sysml", + "line": 27, + "excerpt": "part 'scenarioUse' : 'ProjectScenario'" + }, + { + "kind": "source-excerpt-observation", + "source": "packages/render/src/d2-figure.ts", + "line": 85, + "excerpt": "srcArrow,dstArrow" + }, + { + "kind": "source-excerpt-observation", + "source": "packages/render/src/opensysml.ts", + "line": 68, + "excerpt": "SDK port does not belong to the declared endpoint" + }, + { + "kind": "source-excerpt-observation", + "source": "packages/render/src/index.ts", + "line": 50, + "excerpt": "isDeepStrictEqual(saved,selected)" + }, + { + "kind": "source-excerpt-observation", + "source": "packages/render/src/figure.ts", + "line": 95, + "excerpt": "Model selection differs from captured SDK trace" + } + ] +} \ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow.json.license b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow.json.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow.png b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow.png new file mode 100644 index 0000000..5f24570 Binary files /dev/null and b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow.png differ diff --git a/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow.png.license b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow.png.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.133-capture-preparation-workflow.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.134-render-responsibility-boundaries.d2 b/docs/90-99-views/90-architecture-views/90.134-render-responsibility-boundaries.d2 new file mode 100644 index 0000000..341d68c --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.134-render-responsibility-boundaries.d2 @@ -0,0 +1,163 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + +vars: {d2-config: {layout-engine: elk; data: {figure: |json +{ + "title": "Static renderer responsibility boundaries", + "purpose": "architecture", + "kind": "library-dependency-map", + "language": "en", + "width": 1120, + "primary": "owners", + "questions": [ + { + "ref": "owners", + "text": "Which responsibilities belong to the project, render core and mature libraries?", + "focusRefs": [ + "source" + ] + } + ], + "references": { + "source": "docs/90-99-views/90-architecture-views/90.134-render-responsibility-boundaries.d2" + }, + "basis": { + "captureRef": "design-candidate:render-audit", + "modelRefs": [], + "obligationRefs": [ + "docs/10-19-design/10-architecture/10.142-declarative-render-extensibility-audit.org" + ], + "evidenceRefs": [] + }, + "copy": { + "status": "Design candidate \u00b7 current source associations retained \u00b7 no C/Q/R issued", + "description": "Architecture describes responsibilities and dependencies." + }, + "themes": [ + "blueprint", + "node-editor", + "compact" + ], + "icons": [ + "engineering" + ], + "presentation": { + "scenes": [ + { + "heading": null, + "graph": { + "id": "90.134-render-responsibility-boundaries-scene-1", + "children": [ + { + "id": "project.declarations" + }, + { + "id": "project.resources" + }, + { + "id": "project.composer" + }, + { + "id": "core.compile" + }, + { + "id": "core.compose" + }, + { + "id": "core.export" + }, + { + "id": "libraries.d2" + }, + { + "id": "libraries.html" + }, + { + "id": "libraries.rough" + }, + { + "id": "libraries.xyflow" + }, + { + "id": "libraries.browser" + }, + { + "id": "libraries.elk" + } + ], + "layoutOptions": { + "elk.algorithm": "layered", + "elk.direction": "RIGHT", + "elk.edgeRouting": "ORTHOGONAL", + "elk.spacing.nodeNode": "40", + "elk.layered.spacing.nodeNodeBetweenLayers": "52", + "elk.layered.considerModelOrder.strategy": "NODES_AND_EDGES" + } + }, + "icons": { + "project.declarations": "document", + "project.resources": "selection", + "project.composer": "decision", + "core.compile": "capture", + "core.compose": "decision", + "core.export": "reference", + "libraries.d2": "model", + "libraries.html": "document", + "libraries.rough": "selection", + "libraries.xyflow": "reference", + "libraries.browser": "reference", + "libraries.elk": "model", + "project.source": "document", + "core.capture": "capture", + "core.composition": "decision", + "libraries.drawing": "selection" + }, + "roles": { + "project.declarations": "capture", + "project.resources": "capture", + "project.composer": "capture", + "core.compile": "selection", + "core.compose": "selection", + "core.export": "selection", + "libraries.d2": "external", + "libraries.html": "external", + "libraries.rough": "external", + "libraries.xyflow": "external", + "libraries.browser": "external", + "libraries.elk": "external" + } + } + ] + } +} +| +}}} +project: Project-owned { + declarations: D2 / SysML / Questions / observations + resources: Themes / icons / selected variants + composer: Domain composition / presentation schema +} +core: Render Library { + compile: Declared input / resource resolution + compose: Immutable capture / pure composition + export: Static export / input and visibility checks +} +libraries: Mature libraries { + d2: D2 compiler / model projection + html: parse5 HTML parser + rough: Rough.js Options / primitives + xyflow: XYFlow path utilities + elk: "ELK.js\nMeasured nodes / labels / routing" + browser: Playwright browser / fonts / PNG +} +project.composer -> project.declarations: interprets +project.composer -> core.compose: uses +core.compile -> project.resources: resolves +core.compile -> libraries.d2: delegates +core.compose -> libraries.html: parses +core.export -> libraries.rough: strokes +core.export -> libraries.xyflow: connectors +core.export -> libraries.browser: renders + +core.export -> libraries.elk: measured scene layout and routing diff --git a/docs/90-99-views/90-architecture-views/90.134-render-responsibility-boundaries.json b/docs/90-99-views/90-architecture-views/90.134-render-responsibility-boundaries.json new file mode 100644 index 0000000..1af4a58 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.134-render-responsibility-boundaries.json @@ -0,0 +1,217 @@ +{ + "attribution": { + "copyright": [ + "2026 hardenedlinux Linux Team and Contributors", + "2016 The Inter Project Authors (https://github.com/rsms/inter)" + ], + "license": "LGPL-2.1-or-later AND OFL-1.1" + }, + "observation": { + "canvas": { + "x": 0, + "y": 0, + "width": 1120, + "height": 741.453125 + }, + "subjects": [ + { + "id": "project.declarations", + "role": "capture", + "x": 548.2156982421875, + "y": 158.2502899169922, + "width": 266.186767578125, + "height": 38.125701904296875 + }, + { + "id": "project.resources", + "role": "capture", + "x": 548.2156982421875, + "y": 291.34368896484375, + "width": 243.31134033203125, + "height": 38.12567138671875 + }, + { + "id": "project.composer", + "role": "capture", + "x": 35.25160217285156, + "y": 164.14244079589844, + "width": 295.30096435546875, + "height": 39.51210021972656 + }, + { + "id": "core.compile", + "role": "selection", + "x": 78.92286682128906, + "y": 297.92901611328125, + "width": 251.6296844482422, + "height": 37.4324951171875 + }, + { + "id": "core.compose", + "role": "selection", + "x": 548.9088745117188, + "y": 224.10379028320312, + "width": 264.8004150390625, + "height": 39.5120849609375 + }, + { + "id": "core.export", + "role": "selection", + "x": 49.80868911743164, + "y": 434.904296875, + "width": 280.7438659667969, + "height": 36.046112060546875 + }, + { + "id": "libraries.d2", + "role": "external", + "x": 548.2156982421875, + "y": 357.1971740722656, + "width": 222.5155029296875, + "height": 38.125701904296875 + }, + { + "id": "libraries.html", + "role": "external", + "x": 920.4612426757812, + "y": 224.79696655273438, + "width": 164.28717041015625, + "height": 38.125701904296875 + }, + { + "id": "libraries.rough", + "role": "external", + "x": 548.2156982421875, + "y": 423.0506591796875, + "width": 212.1175537109375, + "height": 38.125701904296875 + }, + { + "id": "libraries.xyflow", + "role": "external", + "x": 548.2156982421875, + "y": 488.9041748046875, + "width": 164.9803466796875, + "height": 36.046142578125 + }, + { + "id": "libraries.browser", + "role": "external", + "x": 548.2156982421875, + "y": 552.6781005859375, + "width": 234.2998046875, + "height": 36.046142578125 + }, + { + "id": "libraries.elk", + "role": "external", + "x": 548.2156982421875, + "y": 616.4520263671875, + "width": 189.24212646484375, + "height": 45.75079345703125 + } + ], + "relations": [ + "project.(composer -> declarations)[0]", + "(project.composer -> core.compose)[0]", + "(core.compile -> project.resources)[0]", + "(core.compile -> libraries.d2)[0]", + "(core.compose -> libraries.html)[0]", + "(core.export -> libraries.rough)[0]", + "(core.export -> libraries.xyflow)[0]", + "(core.export -> libraries.browser)[0]", + "(core.export -> libraries.elk)[0]" + ], + "headings": [ + { + "role": "title", + "x": 20, + "y": 20, + "width": 1080, + "height": 37 + }, + { + "role": "question", + "x": 20, + "y": 57, + "width": 1080, + "height": 34 + }, + { + "role": "note", + "x": 20, + "y": 91, + "width": 1080, + "height": 22 + }, + { + "role": "note", + "x": 20, + "y": 699.453125, + "width": 1080, + "height": 22 + } + ] + }, + "canvas": { + "background": "rgb(240, 245, 247)", + "transparent": false + }, + "readability": { + "minimumTextSize": 8.318336575875486, + "samples": 27 + }, + "inputSHA256": "a8eacc6071c593325bab7372f6b5e2b677529dc16a49ed8f9934f1e58ab54366", + "scenes": [ + { + "inputSHA256": "672338f65dc115193dcbbad8d1dea1aec21daf8e24d81316f338f0c9e8fcdf7e", + "layoutSHA256": "8b4132a0285346c64f3eace09c7f6288e7ac03d1ef821df7badf01d7fc47e9a9", + "nodes": 12, + "edges": 9, + "milliseconds": 146.45333299999947 + } + ], + "svgSHA256": [ + "91e1d006e94e7ab0c0826288f69edecde764ca4065e6326930c76429c0be7491", + "7f6ab69d251738bb7cb4f471b7e3090c34f509cde1b4bafe30b8e516e0b2858d" + ], + "composedHTMLSHA256": "b0f6232a9c2894d07336fe14c4501fcf2fa44383f613be8bf40505df4ef4c8f9", + "dependencies": { + "@fontsource/inter": "5.3.0", + "@fontsource/kalam": "5.3.0", + "@terrastruct/d2": "0.1.33", + "@xyflow/system": "0.0.83", + "elkjs": "0.12.1", + "parse5": "8.0.1", + "roughjs": "4.6.6", + "valibot": "1.2.0", + "web-worker": "1.5.0" + }, + "regionSHA256": {}, + "htmlSHA256": "9ae60c12be612a53b9f35aab92d3cca2b474bb48d34a9999117792d2d1bfe23e", + "drawing": "precise", + "routing": "elkjs@0.12.1", + "assetSHA256": { + "@fontsource/inter/files/inter-latin-400-normal.woff2": "8909904ab6c872eb994093482a88a28eca2cd95912d7b6fecd72103b0dc07edc", + "@fontsource/inter/files/inter-latin-700-normal.woff2": "6f56409fd3d64bb85f7d070bce20749db2d66b6d63cec586cc22d1c761be2491" + }, + "pngSHA256": "c00c4affe67f0b7cec8578e4e99d75a12597d8e021bd2ec2d5a2f86ebd3feb5d", + "browser": "156.0.8078.4", + "width": 1680, + "height": 1113, + "scale": 1.5, + "bounds": { + "architecture": { + "x": 20, + "y": 20, + "width": 1080, + "height": 701.453125 + } + }, + "sources": { + "docs/90-99-views/90-architecture-views/90.134-render-responsibility-boundaries.d2": "738a5710f95aefc9e24662268e6c1a82a08a4dedb2a3008fd7de7a8fafdab4a3", + "packages/render/examples/attribution.ts": "58f7914284a69c4ce42db61ec24c06cf9194232ed3402fc7ae12e3ded4187892", + "packages/render/examples/overview-composition.ts": "d0a4ff5da59577b7dcb6b952e4f7ad3424f23f226e4af8f15c223ed53efcec93", + "packages/render/examples/overviews.ts": "e385215fc31d9d2945c06d7df9f66f700e7e980f71154c99225c2db03e4e093f" + } +} \ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.134-render-responsibility-boundaries.json.license b/docs/90-99-views/90-architecture-views/90.134-render-responsibility-boundaries.json.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.134-render-responsibility-boundaries.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.134-render-responsibility-boundaries.png b/docs/90-99-views/90-architecture-views/90.134-render-responsibility-boundaries.png new file mode 100644 index 0000000..a6d76d1 Binary files /dev/null and b/docs/90-99-views/90-architecture-views/90.134-render-responsibility-boundaries.png differ diff --git a/docs/90-99-views/90-architecture-views/90.134-render-responsibility-boundaries.png.license b/docs/90-99-views/90-architecture-views/90.134-render-responsibility-boundaries.png.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.134-render-responsibility-boundaries.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.134-render-responsibility-boundaries.svg b/docs/90-99-views/90-architecture-views/90.134-render-responsibility-boundaries.svg new file mode 100644 index 0000000..6de9cbd --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.134-render-responsibility-boundaries.svg @@ -0,0 +1,41 @@ + +{"renderer":{"package":"@deterministic-engineering/render","version":"1.0.0","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":{"scenes":[{"heading":null,"graph":{"id":"90.134-render-responsibility-boundaries-scene-1","children":[{"id":"project.declarations"},{"id":"project.resources"},{"id":"project.composer"},{"id":"core.compile"},{"id":"core.compose"},{"id":"core.export"},{"id":"libraries.d2"},{"id":"libraries.html"},{"id":"libraries.rough"},{"id":"libraries.xyflow"},{"id":"libraries.browser"},{"id":"libraries.elk"}],"layoutOptions":{"elk.algorithm":"layered","elk.direction":"RIGHT","elk.edgeRouting":"ORTHOGONAL","elk.spacing.nodeNode":"40","elk.layered.spacing.nodeNodeBetweenLayers":"52","elk.layered.considerModelOrder.strategy":"NODES_AND_EDGES"}},"icons":{"project.declarations":"document","project.resources":"selection","project.composer":"decision","core.compile":"capture","core.compose":"decision","core.export":"reference","libraries.d2":"model","libraries.html":"document","libraries.rough":"selection","libraries.xyflow":"reference","libraries.browser":"reference","libraries.elk":"model","project.source":"document","core.capture":"capture","core.composition":"decision","libraries.drawing":"selection"},"roles":{"project.declarations":"capture","project.resources":"capture","project.composer":"capture","core.compile":"selection","core.compose":"selection","core.export":"selection","libraries.d2":"external","libraries.html":"external","libraries.rough":"external","libraries.xyflow":"external","libraries.browser":"external","libraries.elk":"external"}}]},"drawing":{"mode":"precise","options":{"seed":17,"roughness":1,"strokeWidth":1.2,"fillStyle":"hachure","hachureGap":9,"fillWeight":0.6}},"fonts":[{"family":"Inter","weight":400,"source":"@fontsource/inter/files/inter-latin-400-normal.woff2"},{"family":"Inter","weight":700,"source":"@fontsource/inter/files/inter-latin-700-normal.woff2"}],"palette":{"background":"#F0F5F7","surface":"#FFFFFF","ink":"#193348","muted":"#627787","border":"#D5E1E7","accent":"#246E86","secondary":"#686084","tint":"#E7F1F5","secondaryTint":"#F0EDF5","onAccent":"#FFFFFF","supported":"#237C69","pending":"#9A6C25","conflict":"#A84C60"},"inputSHA256":"a8eacc6071c593325bab7372f6b5e2b677529dc16a49ed8f9934f1e58ab54366","model":{"subjects":[{"id":"project","type":"rectangle","level":1,"label":"Project-owned"},{"id":"project.declarations","type":"rectangle","level":2,"label":"D2 / SysML / Questions / observations"},{"id":"project.resources","type":"rectangle","level":2,"label":"Themes / icons / selected variants"},{"id":"project.composer","type":"rectangle","level":2,"label":"Domain composition / presentation schema"},{"id":"core","type":"rectangle","level":1,"label":"Render Library"},{"id":"core.compile","type":"rectangle","level":2,"label":"Declared input / resource resolution"},{"id":"core.compose","type":"rectangle","level":2,"label":"Immutable capture / pure composition"},{"id":"core.export","type":"rectangle","level":2,"label":"Static export / input and visibility checks"},{"id":"libraries","type":"rectangle","level":1,"label":"Mature libraries"},{"id":"libraries.d2","type":"rectangle","level":2,"label":"D2 compiler / model projection"},{"id":"libraries.html","type":"rectangle","level":2,"label":"parse5 HTML parser"},{"id":"libraries.rough","type":"rectangle","level":2,"label":"Rough.js Options / primitives"},{"id":"libraries.xyflow","type":"rectangle","level":2,"label":"XYFlow path utilities"},{"id":"libraries.elk","type":"rectangle","level":2,"label":"ELK.js\nMeasured nodes / labels / routing"},{"id":"libraries.browser","type":"rectangle","level":2,"label":"Playwright browser / fonts / PNG"}],"relations":[{"id":"project.(composer -> declarations)[0]","src":"project.composer","dst":"project.declarations","label":"interprets","srcArrow":"none","dstArrow":"triangle"},{"id":"(project.composer -> core.compose)[0]","src":"project.composer","dst":"core.compose","label":"uses","srcArrow":"none","dstArrow":"triangle"},{"id":"(core.compile -> project.resources)[0]","src":"core.compile","dst":"project.resources","label":"resolves","srcArrow":"none","dstArrow":"triangle"},{"id":"(core.compile -> libraries.d2)[0]","src":"core.compile","dst":"libraries.d2","label":"delegates","srcArrow":"none","dstArrow":"triangle"},{"id":"(core.compose -> libraries.html)[0]","src":"core.compose","dst":"libraries.html","label":"parses","srcArrow":"none","dstArrow":"triangle"},{"id":"(core.export -> libraries.rough)[0]","src":"core.export","dst":"libraries.rough","label":"strokes","srcArrow":"none","dstArrow":"triangle"},{"id":"(core.export -> libraries.xyflow)[0]","src":"core.export","dst":"libraries.xyflow","label":"connectors","srcArrow":"none","dstArrow":"triangle"},{"id":"(core.export -> libraries.browser)[0]","src":"core.export","dst":"libraries.browser","label":"renders","srcArrow":"none","dstArrow":"triangle"},{"id":"(core.export -> libraries.elk)[0]","src":"core.export","dst":"libraries.elk","label":"measured scene layout and routing","srcArrow":"none","dstArrow":"triangle"}]},"view":{"source":"docs/90-99-views/90-architecture-views/90.134-render-responsibility-boundaries.d2","title":"Static renderer responsibility boundaries","purpose":"architecture","kind":"library-dependency-map","question":{"ref":"owners","text":"Which responsibilities belong to the project, render core and mature libraries?","focusRefs":["source"]},"basis":{"captureRef":"design-candidate:render-audit","modelRefs":[],"obligationRefs":["docs/10-19-design/10-architecture/10.142-declarative-render-extensibility-audit.org"],"evidenceRefs":[]}},"questions":[{"ref":"owners","text":"Which responsibilities belong to the project, render core and mature libraries?","focusRefs":["source"]}],"references":{"source":"docs/90-99-views/90-architecture-views/90.134-render-responsibility-boundaries.d2"},"sourceSHA256":{"docs/90-99-views/90-architecture-views/90.134-render-responsibility-boundaries.d2":"738a5710f95aefc9e24662268e6c1a82a08a4dedb2a3008fd7de7a8fafdab4a3","packages/render/examples/attribution.ts":"58f7914284a69c4ce42db61ec24c06cf9194232ed3402fc7ae12e3ded4187892","packages/render/examples/overview-composition.ts":"d0a4ff5da59577b7dcb6b952e4f7ad3424f23f226e4af8f15c223ed53efcec93","packages/render/examples/overviews.ts":"e385215fc31d9d2945c06d7df9f66f700e7e980f71154c99225c2db03e4e093f"},"rendered":{"observation":{"canvas":{"x":0,"y":0,"width":1120,"height":741.453125},"subjects":[{"id":"project.declarations","role":"capture","x":548.2156982421875,"y":158.2502899169922,"width":266.186767578125,"height":38.125701904296875},{"id":"project.resources","role":"capture","x":548.2156982421875,"y":291.34368896484375,"width":243.31134033203125,"height":38.12567138671875},{"id":"project.composer","role":"capture","x":35.25160217285156,"y":164.14244079589844,"width":295.30096435546875,"height":39.51210021972656},{"id":"core.compile","role":"selection","x":78.92286682128906,"y":297.92901611328125,"width":251.6296844482422,"height":37.4324951171875},{"id":"core.compose","role":"selection","x":548.9088745117188,"y":224.10379028320312,"width":264.8004150390625,"height":39.5120849609375},{"id":"core.export","role":"selection","x":49.80868911743164,"y":434.904296875,"width":280.7438659667969,"height":36.046112060546875},{"id":"libraries.d2","role":"external","x":548.2156982421875,"y":357.1971740722656,"width":222.5155029296875,"height":38.125701904296875},{"id":"libraries.html","role":"external","x":920.4612426757812,"y":224.79696655273438,"width":164.28717041015625,"height":38.125701904296875},{"id":"libraries.rough","role":"external","x":548.2156982421875,"y":423.0506591796875,"width":212.1175537109375,"height":38.125701904296875},{"id":"libraries.xyflow","role":"external","x":548.2156982421875,"y":488.9041748046875,"width":164.9803466796875,"height":36.046142578125},{"id":"libraries.browser","role":"external","x":548.2156982421875,"y":552.6781005859375,"width":234.2998046875,"height":36.046142578125},{"id":"libraries.elk","role":"external","x":548.2156982421875,"y":616.4520263671875,"width":189.24212646484375,"height":45.75079345703125}],"relations":["project.(composer -> declarations)[0]","(project.composer -> core.compose)[0]","(core.compile -> project.resources)[0]","(core.compile -> libraries.d2)[0]","(core.compose -> libraries.html)[0]","(core.export -> libraries.rough)[0]","(core.export -> libraries.xyflow)[0]","(core.export -> libraries.browser)[0]","(core.export -> libraries.elk)[0]"],"headings":[{"role":"title","x":20,"y":20,"width":1080,"height":37},{"role":"question","x":20,"y":57,"width":1080,"height":34},{"role":"note","x":20,"y":91,"width":1080,"height":22},{"role":"note","x":20,"y":699.453125,"width":1080,"height":22}]},"readability":{"minimumTextSize":8.318336575875486,"samples":27},"bounds":{"architecture":{"x":20,"y":20,"width":1080,"height":701.453125}}}}Static renderer responsibility boundaries?Which responsibilities belong to the project, render core and mature libraries?Architecture describes responsibilities and dependencies.{"graph":{"id":"90.134-render-responsibility-boundaries-scene-1","children":[{"id":"project.declarations"},{"id":"project.resources"},{"id":"project.composer"},{"id":"core.compile"},{"id":"core.compose"},{"id":"core.export"},{"id":"libraries.d2"},{"id":"libraries.html"},{"id":"libraries.rough"},{"id":"libraries.xyflow"},{"id":"libraries.browser"},{"id":"libraries.elk"}],"layoutOptions":{"elk.spacing.nodeNode":"40","elk.layered.spacing.nodeNodeBetweenLayers":"52","elk.algorithm":"layered","elk.direction":"RIGHT","elk.edgeRouting":"ORTHOGONAL","elk.layered.considerModelOrder.strategy":"NODES_AND_EDGES"},"edges":[{"id":"project.(composer -> declarations)[0]","sources":["project.composer"],"targets":["project.declarations"]},{"id":"(project.composer -> core.compose)[0]","sources":["project.composer"],"targets":["core.compose"]},{"id":"(core.compile -> project.resources)[0]","sources":["core.compile"],"targets":["project.resources"]},{"id":"(core.compile -> libraries.d2)[0]","sources":["core.compile"],"targets":["libraries.d2"]},{"id":"(core.compose -> libraries.html)[0]","sources":["core.compose"],"targets":["libraries.html"]},{"id":"(core.export -> libraries.rough)[0]","sources":["core.export"],"targets":["libraries.rough"]},{"id":"(core.export -> libraries.xyflow)[0]","sources":["core.export"],"targets":["libraries.xyflow"]},{"id":"(core.export -> libraries.browser)[0]","sources":["core.export"],"targets":["libraries.browser"]},{"id":"(core.export -> libraries.elk)[0]","sources":["core.export"],"targets":["libraries.elk"]}]},"marker":"arrow-7c3f5f623bb3"}interpretsusesresolvesdelegatesparsesstrokesconnectorsrendersmeasured scene layout and routingD2 / SysML / Questions / observationsThemes / icons / selected variantsDomain composition / presentation schemaDeclared input / resource resolutionImmutable capture / pure compositionStatic export / input and visibility checksD2 compiler / model projectionparse5 HTML parserRough.js Options / primitivesXYFlow path utilitiesPlaywright browser / fonts / PNGELK.jsMeasured nodes / labels / routingDesign candidate · current source associations retained · no C/Q/R issued \ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.135-library-project-architecture-comfortable.json b/docs/90-99-views/90-architecture-views/90.135-library-project-architecture-comfortable.json new file mode 100644 index 0000000..e4cc5bf --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.135-library-project-architecture-comfortable.json @@ -0,0 +1,195 @@ +{ + "attribution": { + "copyright": [ + "2026 hardenedlinux Linux Team and Contributors", + "2016 The Inter Project Authors (https://github.com/rsms/inter)" + ], + "license": "LGPL-2.1-or-later AND OFL-1.1" + }, + "observation": { + "canvas": { + "x": 0, + "y": 0, + "width": 1440, + "height": 1473.984375 + }, + "subjects": [ + { + "id": "project", + "role": "project-boundary", + "x": 313.8384704589844, + "y": 579.99462890625, + "width": 937.9881591796875, + "height": 368.995361328125 + }, + { + "id": "consumer", + "role": "selection", + "x": 188.17337036132812, + "y": 182.99964904785156, + "width": 343.9956970214844, + "height": 93.99882507324219 + }, + { + "id": "library", + "role": "publication", + "x": 202.83985900878906, + "y": 1043.98876953125, + "width": 299.9962158203125, + "height": 117.99853515625 + }, + { + "id": "project.profile", + "role": "selection", + "owner": "project", + "x": 873.8314208984375, + "y": 830.9915161132812, + "width": 353.99560546875, + "height": 93.998779296875 + }, + { + "id": "project.scenario", + "role": "capture", + "owner": "project", + "x": 717.166748046875, + "y": 666.9935302734375, + "width": 263.99664306640625, + "height": 93.99884033203125 + }, + { + "id": "project.inputs", + "role": "capture", + "owner": "project", + "x": 558.8353271484375, + "y": 830.9915161132812, + "width": 294.99627685546875, + "height": 93.998779296875 + }, + { + "id": "framework", + "role": "external", + "x": 224.83956909179688, + "y": 1251.9862060546875, + "width": 383.9951477050781, + "height": 117.99853515625 + }, + { + "id": "render", + "role": "selection", + "x": 505.66937255859375, + "y": 366.997314453125, + "width": 302.9962158203125, + "height": 117.99853515625 + }, + { + "id": "review", + "role": "pending", + "x": 532.835693359375, + "y": 1067.988525390625, + "width": 347.99560546875, + "height": 93.998779296875 + } + ], + "relations": [ + "(consumer -> library)[0]", + "(consumer -> render)[0]", + "(render -> project.inputs)[0]", + "(project.profile -> library)[0]", + "project.(scenario -> profile)[0]", + "project.(scenario -> inputs)[0]", + "(library -> framework)[0]", + "(review -> framework)[0]" + ], + "headings": [ + { + "role": "title", + "x": 32, + "y": 32, + "width": 1376, + "height": 37 + }, + { + "role": "question", + "x": 32, + "y": 69, + "width": 1376, + "height": 34 + }, + { + "role": "note", + "x": 32, + "y": 103, + "width": 1376, + "height": 22 + }, + { + "role": "note", + "x": 32, + "y": 1419.984375, + "width": 1376, + "height": 22 + } + ] + }, + "canvas": { + "background": "rgb(246, 250, 249)", + "transparent": false + }, + "readability": { + "minimumTextSize": 10.999861725663717, + "samples": 33 + }, + "inputSHA256": "29417452989d5a3eff7a01a998766d4d66a4301d8b35a4db9a2d7b6ec1c6a067", + "scenes": [ + { + "inputSHA256": "fba5ef2b7ededf431756a2464104976488e1b60e4bcc2f762ed07bd1a80f54b1", + "layoutSHA256": "03a86a343ad04c9ee3b5820f6331ad16c9b3cf99532fa0c9a7480dd3eac7fe94", + "nodes": 9, + "edges": 8, + "milliseconds": 184.3934590000008 + } + ], + "svgSHA256": [ + "3ec941790d4c7063c7a30f406a565393d2f8f60d52ef19800c42aa5cc37b9aab", + "5a7edb5250cbce6ad7a8a15c26c042dd0e10c69c0a181070b6359a6af314905d" + ], + "composedHTMLSHA256": "f0b48fca83d458855f527ed5e2b0b5610bfe01d3b63976799dc33015e1bd69ee", + "dependencies": { + "@fontsource/inter": "5.3.0", + "@fontsource/kalam": "5.3.0", + "@terrastruct/d2": "0.1.33", + "@xyflow/system": "0.0.83", + "elkjs": "0.12.1", + "parse5": "8.0.1", + "roughjs": "4.6.6", + "valibot": "1.2.0", + "web-worker": "1.5.0" + }, + "regionSHA256": {}, + "htmlSHA256": "6e28aab4574a70a74e02e730363e8e52f1e64d4859d9259002da570374c21e46", + "drawing": "precise", + "routing": "elkjs@0.12.1", + "assetSHA256": { + "@fontsource/inter/files/inter-latin-700-normal.woff2": "6f56409fd3d64bb85f7d070bce20749db2d66b6d63cec586cc22d1c761be2491", + "@fontsource/inter/files/inter-latin-400-normal.woff2": "8909904ab6c872eb994093482a88a28eca2cd95912d7b6fecd72103b0dc07edc" + }, + "pngSHA256": "fffb36591222cbc928199625f1b2a8cb327f1ad0da97af05b106657b2dbb02fc", + "browser": "156.0.8078.4", + "width": 2160, + "height": 2211, + "scale": 1.5, + "bounds": { + "architecture": { + "x": 32, + "y": 32, + "width": 1376, + "height": 1409.984375 + } + }, + "sources": { + "docs/90-99-views/90-architecture-views/90.135-library-project-architecture.d2": "86aadd565d3f116f9f766d428f30ec9fea9518de360cb7e91ce2ea02ce2bfc3b", + "packages/render/examples/attribution.ts": "58f7914284a69c4ce42db61ec24c06cf9194232ed3402fc7ae12e3ded4187892", + "packages/render/examples/overview-composition.ts": "d0a4ff5da59577b7dcb6b952e4f7ad3424f23f226e4af8f15c223ed53efcec93", + "packages/render/examples/overviews.ts": "e385215fc31d9d2945c06d7df9f66f700e7e980f71154c99225c2db03e4e093f" + } +} \ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.135-library-project-architecture-comfortable.json.license b/docs/90-99-views/90-architecture-views/90.135-library-project-architecture-comfortable.json.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.135-library-project-architecture-comfortable.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.135-library-project-architecture-comfortable.png b/docs/90-99-views/90-architecture-views/90.135-library-project-architecture-comfortable.png new file mode 100644 index 0000000..9a08b16 Binary files /dev/null and b/docs/90-99-views/90-architecture-views/90.135-library-project-architecture-comfortable.png differ diff --git a/docs/90-99-views/90-architecture-views/90.135-library-project-architecture-comfortable.png.license b/docs/90-99-views/90-architecture-views/90.135-library-project-architecture-comfortable.png.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.135-library-project-architecture-comfortable.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.135-library-project-architecture-comfortable.svg b/docs/90-99-views/90-architecture-views/90.135-library-project-architecture-comfortable.svg new file mode 100644 index 0000000..b36ba64 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.135-library-project-architecture-comfortable.svg @@ -0,0 +1,41 @@ + +{"renderer":{"package":"@deterministic-engineering/render","version":"1.0.0","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":{"scenes":[{"heading":null,"graph":{"id":"90.135-library-project-architecture-scene-1","children":[{"id":"consumer"},{"id":"library"},{"id":"project","children":[{"id":"project.profile"},{"id":"project.scenario"},{"id":"project.inputs"}]},{"id":"framework"},{"id":"render"},{"id":"review"}],"layoutOptions":{"elk.algorithm":"layered","elk.edgeRouting":"ORTHOGONAL","elk.spacing.nodeNode":"30","elk.layered.spacing.nodeNodeBetweenLayers":"30","elk.layered.spacing.edgeNodeBetweenLayers":"12","elk.layered.considerModelOrder.strategy":"NODES_AND_EDGES","elk.hierarchyHandling":"INCLUDE_CHILDREN"}},"icons":{"consumer":"reference","library":"library","framework":"model","render":"selection","review":"evidence","project.profile":"selection","project.scenario":"capture","project.inputs":"document"},"roles":{"consumer":"selection","project":"project-boundary","library":"publication","framework":"external","render":"selection","review":"pending","project.profile":"selection","project.scenario":"capture","project.inputs":"capture"}}]},"drawing":{"mode":"precise","options":{"seed":17,"roughness":1,"strokeWidth":1.2,"fillStyle":"hachure","hachureGap":9,"fillWeight":0.6}},"fonts":[{"family":"Inter","weight":400,"source":"@fontsource/inter/files/inter-latin-400-normal.woff2"},{"family":"Inter","weight":700,"source":"@fontsource/inter/files/inter-latin-700-normal.woff2"}],"palette":{"background":"#F6FAF9","surface":"#FFFFFF","ink":"#163C43","muted":"#496A70","border":"#C9DDDA","accent":"#087E82","secondary":"#946044","tint":"#E1F1EC","secondaryTint":"#F4EADA","onAccent":"#FFFFFF","supported":"#237653","pending":"#986320","conflict":"#A13E54"},"inputSHA256":"29417452989d5a3eff7a01a998766d4d66a4301d8b35a4db9a2d7b6ec1c6a067","model":{"subjects":[{"id":"consumer","type":"rectangle","level":1,"label":"Downstream repositories\nSelected Library and render APIs"},{"id":"project","type":"rectangle","level":1,"label":"Project-owned declarations"},{"id":"project.profile","type":"rectangle","level":2,"label":"Profile\nSelects models, policies and methods"},{"id":"project.scenario","type":"rectangle","level":2,"label":"Scenario\nBinds real project inputs"},{"id":"project.inputs","type":"rectangle","level":2,"label":"Repository inputs\nSysML / Org / D2 / decisions"},{"id":"library","type":"rectangle","level":1,"label":"Engineering Library\nModels / obligations / policies\nScheme method bindings"},{"id":"framework","type":"rectangle","level":1,"label":"Upstream capabilities\nPOO / Yuanxu / Core contracts and Scope\nASCENT Programs / selected methods"},{"id":"render","type":"rectangle","level":1,"label":"Static Render Library\nD2 / HTML / SVG / PNG\nThemes and icon packs"},{"id":"review","type":"rectangle","level":1,"label":"Aitia integration\nTarget independent review boundary"}],"relations":[{"id":"(consumer -> library)[0]","src":"consumer","dst":"library","label":"adopts definitions","srcArrow":"none","dstArrow":"triangle"},{"id":"(consumer -> render)[0]","src":"consumer","dst":"render","label":"uses static views","srcArrow":"none","dstArrow":"triangle"},{"id":"(render -> project.inputs)[0]","src":"render","dst":"project.inputs","label":"reads model and Questions","srcArrow":"none","dstArrow":"triangle"},{"id":"(project.profile -> library)[0]","src":"project.profile","dst":"library","label":"selects definitions","srcArrow":"none","dstArrow":"triangle"},{"id":"project.(scenario -> profile)[0]","src":"project.scenario","dst":"project.profile","label":"binds selection","srcArrow":"none","dstArrow":"triangle"},{"id":"project.(scenario -> inputs)[0]","src":"project.scenario","dst":"project.inputs","label":"captures actual inputs","srcArrow":"none","dstArrow":"triangle"},{"id":"(library -> framework)[0]","src":"library","dst":"framework","label":"uses public capabilities","srcArrow":"none","dstArrow":"triangle"},{"id":"(review -> framework)[0]","src":"review","dst":"framework","label":"requires qualified query context","srcArrow":"none","dstArrow":"triangle"}]},"view":{"source":"docs/90-99-views/90-architecture-views/90.135-library-project-architecture.d2","title":"Engineering Library and project responsibilities","purpose":"architecture","kind":"repository-dependencies","question":{"ref":"scope","text":"Who owns reusable definitions, project choices, method bindings and presentation?","focusRefs":["source"]},"basis":{"captureRef":"design-candidate:current-readme","modelRefs":["project.sysml"],"obligationRefs":["docs/10-19-design/10-architecture/10.142-declarative-render-extensibility-audit.org"],"evidenceRefs":[]}},"questions":[{"ref":"scope","text":"Who owns reusable definitions, project choices, method bindings and presentation?","focusRefs":["source"]}],"references":{"source":"docs/90-99-views/90-architecture-views/90.135-library-project-architecture.d2"},"sourceSHA256":{"docs/90-99-views/90-architecture-views/90.135-library-project-architecture.d2":"86aadd565d3f116f9f766d428f30ec9fea9518de360cb7e91ce2ea02ce2bfc3b","packages/render/examples/attribution.ts":"58f7914284a69c4ce42db61ec24c06cf9194232ed3402fc7ae12e3ded4187892","packages/render/examples/overview-composition.ts":"d0a4ff5da59577b7dcb6b952e4f7ad3424f23f226e4af8f15c223ed53efcec93","packages/render/examples/overviews.ts":"e385215fc31d9d2945c06d7df9f66f700e7e980f71154c99225c2db03e4e093f"},"rendered":{"observation":{"canvas":{"x":0,"y":0,"width":1440,"height":1473.984375},"subjects":[{"id":"project","role":"project-boundary","x":313.8384704589844,"y":579.99462890625,"width":937.9881591796875,"height":368.995361328125},{"id":"consumer","role":"selection","x":188.17337036132812,"y":182.99964904785156,"width":343.9956970214844,"height":93.99882507324219},{"id":"library","role":"publication","x":202.83985900878906,"y":1043.98876953125,"width":299.9962158203125,"height":117.99853515625},{"id":"project.profile","role":"selection","owner":"project","x":873.8314208984375,"y":830.9915161132812,"width":353.99560546875,"height":93.998779296875},{"id":"project.scenario","role":"capture","owner":"project","x":717.166748046875,"y":666.9935302734375,"width":263.99664306640625,"height":93.99884033203125},{"id":"project.inputs","role":"capture","owner":"project","x":558.8353271484375,"y":830.9915161132812,"width":294.99627685546875,"height":93.998779296875},{"id":"framework","role":"external","x":224.83956909179688,"y":1251.9862060546875,"width":383.9951477050781,"height":117.99853515625},{"id":"render","role":"selection","x":505.66937255859375,"y":366.997314453125,"width":302.9962158203125,"height":117.99853515625},{"id":"review","role":"pending","x":532.835693359375,"y":1067.988525390625,"width":347.99560546875,"height":93.998779296875}],"relations":["(consumer -> library)[0]","(consumer -> render)[0]","(render -> project.inputs)[0]","(project.profile -> library)[0]","project.(scenario -> profile)[0]","project.(scenario -> inputs)[0]","(library -> framework)[0]","(review -> framework)[0]"],"headings":[{"role":"title","x":32,"y":32,"width":1376,"height":37},{"role":"question","x":32,"y":69,"width":1376,"height":34},{"role":"note","x":32,"y":103,"width":1376,"height":22},{"role":"note","x":32,"y":1419.984375,"width":1376,"height":22}]},"readability":{"minimumTextSize":10.999861725663717,"samples":33},"bounds":{"architecture":{"x":32,"y":32,"width":1376,"height":1409.984375}}}}Engineering Library and project responsibilities?Who owns reusable definitions, project choices, method bindings and presentation?Architecture describes responsibilities and dependencies.{"graph":{"id":"90.135-library-project-architecture-scene-1","children":[{"id":"consumer"},{"id":"library"},{"id":"project","children":[{"id":"project.profile"},{"id":"project.scenario"},{"id":"project.inputs"}]},{"id":"framework"},{"id":"render"},{"id":"review"}],"layoutOptions":{"elk.spacing.nodeNode":"30","elk.layered.spacing.nodeNodeBetweenLayers":"30","elk.algorithm":"layered","elk.direction":"DOWN","elk.edgeRouting":"ORTHOGONAL","elk.layered.spacing.edgeNodeBetweenLayers":"12","elk.layered.considerModelOrder.strategy":"NODES_AND_EDGES","elk.hierarchyHandling":"INCLUDE_CHILDREN"},"edges":[{"id":"(consumer -> library)[0]","sources":["consumer"],"targets":["library"]},{"id":"(consumer -> render)[0]","sources":["consumer"],"targets":["render"]},{"id":"(render -> project.inputs)[0]","sources":["render"],"targets":["project.inputs"]},{"id":"(project.profile -> library)[0]","sources":["project.profile"],"targets":["library"]},{"id":"project.(scenario -> profile)[0]","sources":["project.scenario"],"targets":["project.profile"]},{"id":"project.(scenario -> inputs)[0]","sources":["project.scenario"],"targets":["project.inputs"]},{"id":"(library -> framework)[0]","sources":["library"],"targets":["framework"]},{"id":"(review -> framework)[0]","sources":["review"],"targets":["framework"]}]},"marker":"arrow-ed2cf0e9d928"}Project-owned declarationsadopts definitionsuses static viewsreads model and Questionsselects definitionsbinds selectioncaptures actual inputsuses public capabilitiesrequires qualified query contextDownstream repositoriesSelected Library and render APIsEngineering LibraryModels / obligations / policiesScheme method bindingsProfileSelects models, policies and methodsScenarioBinds real project inputsRepository inputsSysML / Org / D2 / decisionsUpstream capabilitiesPOO / Yuanxu / Core contracts and ScopeASCENT Programs / selected methodsStatic Render LibraryD2 / HTML / SVG / PNGThemes and icon packsAitia integrationTarget independent review boundaryDesign candidate · current source associations retained · no C/Q/R issued \ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.135-library-project-architecture-node-editor.json b/docs/90-99-views/90-architecture-views/90.135-library-project-architecture-node-editor.json new file mode 100644 index 0000000..5dd70b2 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.135-library-project-architecture-node-editor.json @@ -0,0 +1,195 @@ +{ + "attribution": { + "copyright": [ + "2026 hardenedlinux Linux Team and Contributors", + "2016 The Inter Project Authors (https://github.com/rsms/inter)" + ], + "license": "LGPL-2.1-or-later AND OFL-1.1" + }, + "observation": { + "canvas": { + "x": 0, + "y": 0, + "width": 1440, + "height": 1209 + }, + "subjects": [ + { + "id": "project", + "role": "project-boundary", + "x": 379, + "y": 494, + "width": 807, + "height": 278 + }, + { + "id": "consumer", + "role": "selection", + "x": 276, + "y": 165, + "width": 276, + "height": 66 + }, + { + "id": "library", + "role": "publication", + "x": 285.3333435058594, + "y": 862, + "width": 248.00003051757812, + "height": 88 + }, + { + "id": "project.profile", + "role": "selection", + "owner": "project", + "x": 876, + "y": 694, + "width": 298, + "height": 66 + }, + { + "id": "project.scenario", + "role": "capture", + "owner": "project", + "x": 771.6666870117188, + "y": 563, + "width": 214, + "height": 66 + }, + { + "id": "project.inputs", + "role": "capture", + "owner": "project", + "x": 613, + "y": 694, + "width": 243, + "height": 66 + }, + { + "id": "framework", + "role": "external", + "x": 301, + "y": 1035, + "width": 325, + "height": 88 + }, + { + "id": "render", + "role": "selection", + "x": 573.5, + "y": 316, + "width": 241, + "height": 88 + }, + { + "id": "review", + "role": "pending", + "x": 563.3333740234375, + "y": 884, + "width": 292, + "height": 66 + } + ], + "relations": [ + "(consumer -> library)[0]", + "(consumer -> render)[0]", + "(render -> project.inputs)[0]", + "(project.profile -> library)[0]", + "project.(scenario -> profile)[0]", + "project.(scenario -> inputs)[0]", + "(library -> framework)[0]", + "(review -> framework)[0]" + ], + "headings": [ + { + "role": "title", + "x": 20, + "y": 20, + "width": 1400, + "height": 37 + }, + { + "role": "question", + "x": 20, + "y": 57, + "width": 1400, + "height": 34 + }, + { + "role": "note", + "x": 20, + "y": 91, + "width": 1400, + "height": 22 + }, + { + "role": "note", + "x": 20, + "y": 1167, + "width": 1400, + "height": 22 + } + ] + }, + "canvas": { + "background": "rgb(246, 250, 249)", + "transparent": false + }, + "readability": { + "minimumTextSize": 12, + "samples": 33 + }, + "inputSHA256": "e439397ea4871dd5ad84edb341fa344ccebda025aeec1a0f2547dfc3e493b8ff", + "scenes": [ + { + "inputSHA256": "8406d16a904daf76115724b6413047a2d434f63f71355d90fb80ae9b9ac5f366", + "layoutSHA256": "590e4d00cbfdd73dd1e8ed547de0b4b60da888e50ea4d6c1baf1b44c490ca8a5", + "nodes": 9, + "edges": 8, + "milliseconds": 161.31087500000012 + } + ], + "svgSHA256": [ + "b3efa3b5c40e10a3b641af99114e5cb493983f11cdda41a9d892f7870d1c852e", + "d84a28888592655baa250325949b6dbdfbf6a30ebd5ae8e7af0bd6638ad37003" + ], + "composedHTMLSHA256": "b8fdd893f0d73f86d5ac9ef99ee148550275735ea88ad7578d09b29acb645757", + "dependencies": { + "@fontsource/inter": "5.3.0", + "@fontsource/kalam": "5.3.0", + "@terrastruct/d2": "0.1.33", + "@xyflow/system": "0.0.83", + "elkjs": "0.12.1", + "parse5": "8.0.1", + "roughjs": "4.6.6", + "valibot": "1.2.0", + "web-worker": "1.5.0" + }, + "regionSHA256": {}, + "htmlSHA256": "ff9cf77a5d73c9fa015c212e0d0ac875f40a782e25ca85e2acc351b3fff9bc17", + "drawing": "precise", + "routing": "elkjs@0.12.1", + "assetSHA256": { + "@fontsource/inter/files/inter-latin-400-normal.woff2": "8909904ab6c872eb994093482a88a28eca2cd95912d7b6fecd72103b0dc07edc", + "@fontsource/inter/files/inter-latin-700-normal.woff2": "6f56409fd3d64bb85f7d070bce20749db2d66b6d63cec586cc22d1c761be2491" + }, + "pngSHA256": "a46938be0ebfaa0b29e25ca49cef38f700e1f4a3dcddfdafc57784d118eb1c96", + "browser": "156.0.8078.4", + "width": 2160, + "height": 1814, + "scale": 1.5, + "bounds": { + "architecture": { + "x": 20, + "y": 20, + "width": 1400, + "height": 1169 + } + }, + "sources": { + "docs/90-99-views/90-architecture-views/90.135-library-project-architecture.d2": "86aadd565d3f116f9f766d428f30ec9fea9518de360cb7e91ce2ea02ce2bfc3b", + "packages/render/examples/attribution.ts": "58f7914284a69c4ce42db61ec24c06cf9194232ed3402fc7ae12e3ded4187892", + "packages/render/examples/overview-composition.ts": "d0a4ff5da59577b7dcb6b952e4f7ad3424f23f226e4af8f15c223ed53efcec93", + "packages/render/examples/overviews.ts": "e385215fc31d9d2945c06d7df9f66f700e7e980f71154c99225c2db03e4e093f" + } +} \ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.135-library-project-architecture-node-editor.json.license b/docs/90-99-views/90-architecture-views/90.135-library-project-architecture-node-editor.json.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.135-library-project-architecture-node-editor.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.135-library-project-architecture-node-editor.png b/docs/90-99-views/90-architecture-views/90.135-library-project-architecture-node-editor.png new file mode 100644 index 0000000..b0471b3 Binary files /dev/null and b/docs/90-99-views/90-architecture-views/90.135-library-project-architecture-node-editor.png differ diff --git a/docs/90-99-views/90-architecture-views/90.135-library-project-architecture-node-editor.png.license b/docs/90-99-views/90-architecture-views/90.135-library-project-architecture-node-editor.png.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.135-library-project-architecture-node-editor.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.135-library-project-architecture-node-editor.svg b/docs/90-99-views/90-architecture-views/90.135-library-project-architecture-node-editor.svg new file mode 100644 index 0000000..3854b77 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.135-library-project-architecture-node-editor.svg @@ -0,0 +1,41 @@ + +{"renderer":{"package":"@deterministic-engineering/render","version":"1.0.0","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":{"scenes":[{"heading":null,"graph":{"id":"90.135-library-project-architecture-scene-1","children":[{"id":"consumer"},{"id":"library"},{"id":"project","children":[{"id":"project.profile"},{"id":"project.scenario"},{"id":"project.inputs"}]},{"id":"framework"},{"id":"render"},{"id":"review"}],"layoutOptions":{"elk.algorithm":"layered","elk.edgeRouting":"ORTHOGONAL","elk.spacing.nodeNode":"30","elk.layered.spacing.nodeNodeBetweenLayers":"30","elk.layered.spacing.edgeNodeBetweenLayers":"12","elk.layered.considerModelOrder.strategy":"NODES_AND_EDGES","elk.hierarchyHandling":"INCLUDE_CHILDREN"}},"icons":{"consumer":"reference","library":"library","framework":"model","render":"selection","review":"evidence","project.profile":"selection","project.scenario":"capture","project.inputs":"document"},"roles":{"consumer":"selection","project":"project-boundary","library":"publication","framework":"external","render":"selection","review":"pending","project.profile":"selection","project.scenario":"capture","project.inputs":"capture"}}]},"drawing":{"mode":"precise","options":{"seed":17,"roughness":1,"strokeWidth":1.2,"fillStyle":"hachure","hachureGap":9,"fillWeight":0.6}},"fonts":[{"family":"Inter","weight":400,"source":"@fontsource/inter/files/inter-latin-400-normal.woff2"},{"family":"Inter","weight":700,"source":"@fontsource/inter/files/inter-latin-700-normal.woff2"}],"palette":{"background":"#F6FAF9","surface":"#FFFFFF","ink":"#163C43","muted":"#496A70","border":"#C9DDDA","accent":"#087E82","secondary":"#946044","tint":"#E1F1EC","secondaryTint":"#F4EADA","onAccent":"#FFFFFF","supported":"#237653","pending":"#986320","conflict":"#A13E54"},"inputSHA256":"e439397ea4871dd5ad84edb341fa344ccebda025aeec1a0f2547dfc3e493b8ff","model":{"subjects":[{"id":"consumer","type":"rectangle","level":1,"label":"Downstream repositories\nSelected Library and render APIs"},{"id":"project","type":"rectangle","level":1,"label":"Project-owned declarations"},{"id":"project.profile","type":"rectangle","level":2,"label":"Profile\nSelects models, policies and methods"},{"id":"project.scenario","type":"rectangle","level":2,"label":"Scenario\nBinds real project inputs"},{"id":"project.inputs","type":"rectangle","level":2,"label":"Repository inputs\nSysML / Org / D2 / decisions"},{"id":"library","type":"rectangle","level":1,"label":"Engineering Library\nModels / obligations / policies\nScheme method bindings"},{"id":"framework","type":"rectangle","level":1,"label":"Upstream capabilities\nPOO / Yuanxu / Core contracts and Scope\nASCENT Programs / selected methods"},{"id":"render","type":"rectangle","level":1,"label":"Static Render Library\nD2 / HTML / SVG / PNG\nThemes and icon packs"},{"id":"review","type":"rectangle","level":1,"label":"Aitia integration\nTarget independent review boundary"}],"relations":[{"id":"(consumer -> library)[0]","src":"consumer","dst":"library","label":"adopts definitions","srcArrow":"none","dstArrow":"triangle"},{"id":"(consumer -> render)[0]","src":"consumer","dst":"render","label":"uses static views","srcArrow":"none","dstArrow":"triangle"},{"id":"(render -> project.inputs)[0]","src":"render","dst":"project.inputs","label":"reads model and Questions","srcArrow":"none","dstArrow":"triangle"},{"id":"(project.profile -> library)[0]","src":"project.profile","dst":"library","label":"selects definitions","srcArrow":"none","dstArrow":"triangle"},{"id":"project.(scenario -> profile)[0]","src":"project.scenario","dst":"project.profile","label":"binds selection","srcArrow":"none","dstArrow":"triangle"},{"id":"project.(scenario -> inputs)[0]","src":"project.scenario","dst":"project.inputs","label":"captures actual inputs","srcArrow":"none","dstArrow":"triangle"},{"id":"(library -> framework)[0]","src":"library","dst":"framework","label":"uses public capabilities","srcArrow":"none","dstArrow":"triangle"},{"id":"(review -> framework)[0]","src":"review","dst":"framework","label":"requires qualified query context","srcArrow":"none","dstArrow":"triangle"}]},"view":{"source":"docs/90-99-views/90-architecture-views/90.135-library-project-architecture.d2","title":"Engineering Library and project responsibilities","purpose":"architecture","kind":"repository-dependencies","question":{"ref":"scope","text":"Who owns reusable definitions, project choices, method bindings and presentation?","focusRefs":["source"]},"basis":{"captureRef":"design-candidate:current-readme","modelRefs":["project.sysml"],"obligationRefs":["docs/10-19-design/10-architecture/10.142-declarative-render-extensibility-audit.org"],"evidenceRefs":[]}},"questions":[{"ref":"scope","text":"Who owns reusable definitions, project choices, method bindings and presentation?","focusRefs":["source"]}],"references":{"source":"docs/90-99-views/90-architecture-views/90.135-library-project-architecture.d2"},"sourceSHA256":{"docs/90-99-views/90-architecture-views/90.135-library-project-architecture.d2":"86aadd565d3f116f9f766d428f30ec9fea9518de360cb7e91ce2ea02ce2bfc3b","packages/render/examples/attribution.ts":"58f7914284a69c4ce42db61ec24c06cf9194232ed3402fc7ae12e3ded4187892","packages/render/examples/overview-composition.ts":"d0a4ff5da59577b7dcb6b952e4f7ad3424f23f226e4af8f15c223ed53efcec93","packages/render/examples/overviews.ts":"e385215fc31d9d2945c06d7df9f66f700e7e980f71154c99225c2db03e4e093f"},"rendered":{"observation":{"canvas":{"x":0,"y":0,"width":1440,"height":1209},"subjects":[{"id":"project","role":"project-boundary","x":379,"y":494,"width":807,"height":278},{"id":"consumer","role":"selection","x":276,"y":165,"width":276,"height":66},{"id":"library","role":"publication","x":285.3333435058594,"y":862,"width":248.00003051757812,"height":88},{"id":"project.profile","role":"selection","owner":"project","x":876,"y":694,"width":298,"height":66},{"id":"project.scenario","role":"capture","owner":"project","x":771.6666870117188,"y":563,"width":214,"height":66},{"id":"project.inputs","role":"capture","owner":"project","x":613,"y":694,"width":243,"height":66},{"id":"framework","role":"external","x":301,"y":1035,"width":325,"height":88},{"id":"render","role":"selection","x":573.5,"y":316,"width":241,"height":88},{"id":"review","role":"pending","x":563.3333740234375,"y":884,"width":292,"height":66}],"relations":["(consumer -> library)[0]","(consumer -> render)[0]","(render -> project.inputs)[0]","(project.profile -> library)[0]","project.(scenario -> profile)[0]","project.(scenario -> inputs)[0]","(library -> framework)[0]","(review -> framework)[0]"],"headings":[{"role":"title","x":20,"y":20,"width":1400,"height":37},{"role":"question","x":20,"y":57,"width":1400,"height":34},{"role":"note","x":20,"y":91,"width":1400,"height":22},{"role":"note","x":20,"y":1167,"width":1400,"height":22}]},"readability":{"minimumTextSize":12,"samples":33},"bounds":{"architecture":{"x":20,"y":20,"width":1400,"height":1169}}}}Engineering Library and project responsibilities?Who owns reusable definitions, project choices, method bindings and presentation?Architecture describes responsibilities and dependencies.{"graph":{"id":"90.135-library-project-architecture-scene-1","children":[{"id":"consumer"},{"id":"library"},{"id":"project","children":[{"id":"project.profile"},{"id":"project.scenario"},{"id":"project.inputs"}]},{"id":"framework"},{"id":"render"},{"id":"review"}],"layoutOptions":{"elk.spacing.nodeNode":"30","elk.layered.spacing.nodeNodeBetweenLayers":"30","elk.algorithm":"layered","elk.direction":"DOWN","elk.edgeRouting":"ORTHOGONAL","elk.layered.spacing.edgeNodeBetweenLayers":"12","elk.layered.considerModelOrder.strategy":"NODES_AND_EDGES","elk.hierarchyHandling":"INCLUDE_CHILDREN"},"edges":[{"id":"(consumer -> library)[0]","sources":["consumer"],"targets":["library"]},{"id":"(consumer -> render)[0]","sources":["consumer"],"targets":["render"]},{"id":"(render -> project.inputs)[0]","sources":["render"],"targets":["project.inputs"]},{"id":"(project.profile -> library)[0]","sources":["project.profile"],"targets":["library"]},{"id":"project.(scenario -> profile)[0]","sources":["project.scenario"],"targets":["project.profile"]},{"id":"project.(scenario -> inputs)[0]","sources":["project.scenario"],"targets":["project.inputs"]},{"id":"(library -> framework)[0]","sources":["library"],"targets":["framework"]},{"id":"(review -> framework)[0]","sources":["review"],"targets":["framework"]}]},"marker":"arrow-ed2cf0e9d928"}Project-owned declarationsadopts definitionsuses static viewsreads model and Questionsselects definitionsbinds selectioncaptures actual inputsuses public capabilitiesrequires qualified query contextDownstream repositoriesSelected Library and render APIsEngineering LibraryModels / obligations / policiesScheme method bindingsProfileSelects models, policies and methodsScenarioBinds real project inputsRepository inputsSysML / Org / D2 / decisionsUpstream capabilitiesPOO / Yuanxu / Core contracts and ScopeASCENT Programs / selected methodsStatic Render LibraryD2 / HTML / SVG / PNGThemes and icon packsAitia integrationTarget independent review boundaryDesign candidate · current source associations retained · no C/Q/R issued \ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.135-library-project-architecture-sketchbook.json b/docs/90-99-views/90-architecture-views/90.135-library-project-architecture-sketchbook.json new file mode 100644 index 0000000..4f29c32 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.135-library-project-architecture-sketchbook.json @@ -0,0 +1,195 @@ +{ + "attribution": { + "copyright": [ + "2026 hardenedlinux Linux Team and Contributors", + "2014 Indian Type Foundry (info@indiantypefoundry.com)" + ], + "license": "LGPL-2.1-or-later AND OFL-1.1" + }, + "observation": { + "canvas": { + "x": 0, + "y": 0, + "width": 1440, + "height": 1392 + }, + "subjects": [ + { + "id": "project", + "role": "project-boundary", + "x": 392.8243408203125, + "y": 561.1906127929688, + "width": 766.97900390625, + "height": 330.10870361328125 + }, + { + "id": "consumer", + "role": "selection", + "x": 295.8333435058594, + "y": 180.58004760742188, + "width": 263.8535461425781, + "height": 85.39031982421875 + }, + { + "id": "library", + "role": "publication", + "x": 302.62872314453125, + "y": 982, + "width": 239.17535400390625, + "height": 115.411376953125 + }, + { + "id": "project.profile", + "role": "selection", + "owner": "project", + "x": 864.4692993164062, + "y": 792.423583984375, + "width": 282.03070068359375, + "height": 84.1339111328125 + }, + { + "id": "project.scenario", + "role": "capture", + "owner": "project", + "x": 750.1666259765625, + "y": 640.65966796875, + "width": 208.45452880859375, + "height": 84.072509765625 + }, + { + "id": "project.inputs", + "role": "capture", + "owner": "project", + "x": 604.0575561523438, + "y": 792.3423461914062, + "width": 240.44244384765625, + "height": 84.1802978515625 + }, + { + "id": "framework", + "role": "external", + "x": 317.31500244140625, + "y": 1185.283935546875, + "width": 313.83837890625, + "height": 116.17626953125 + }, + { + "id": "render", + "role": "selection", + "x": 566.35693359375, + "y": 353, + "width": 237.101318359375, + "height": 115.31634521484375 + }, + { + "id": "review", + "role": "pending", + "x": 571.1666259765625, + "y": 1013.5283203125, + "width": 276.005615234375, + "height": 83.7562255859375 + } + ], + "relations": [ + "(consumer -> library)[0]", + "(consumer -> render)[0]", + "(render -> project.inputs)[0]", + "(project.profile -> library)[0]", + "project.(scenario -> profile)[0]", + "project.(scenario -> inputs)[0]", + "(library -> framework)[0]", + "(review -> framework)[0]" + ], + "headings": [ + { + "role": "title", + "x": 20, + "y": 20, + "width": 1400, + "height": 48 + }, + { + "role": "question", + "x": 20, + "y": 68, + "width": 1400, + "height": 34 + }, + { + "role": "note", + "x": 20, + "y": 102, + "width": 1400, + "height": 27 + }, + { + "role": "note", + "x": 20, + "y": 1345, + "width": 1400, + "height": 27 + } + ] + }, + "canvas": { + "background": "rgb(252, 248, 243)", + "transparent": false + }, + "readability": { + "minimumTextSize": 12, + "samples": 33 + }, + "inputSHA256": "c355b7a93f81772804cd6463294e436ea14a248f78ab22619ee2496cc6b89f27", + "scenes": [ + { + "inputSHA256": "53b42f41ae30dee3670b745104becb0bbcae58548cd90af460d5f1dc00635ba6", + "layoutSHA256": "8394815674f3762817a69af9459d34803f0a8c494b1486a2668a1a9f4b0bf078", + "nodes": 9, + "edges": 8, + "milliseconds": 155.12333299999955 + } + ], + "svgSHA256": [ + "d79f07cacc16f3b87dd094685a84f48915cf1c4c5dda6048dd91fc25f8600b85", + "74f9ffa51ee76111fd930d1c47c6021c4336eb896e7af02ea1a728d7a28db7fb" + ], + "composedHTMLSHA256": "0b684c6f22754c6020c608aaae1fe2da0a6bb7015f181937246c8285236c1f77", + "dependencies": { + "@fontsource/inter": "5.3.0", + "@fontsource/kalam": "5.3.0", + "@terrastruct/d2": "0.1.33", + "@xyflow/system": "0.0.83", + "elkjs": "0.12.1", + "parse5": "8.0.1", + "roughjs": "4.6.6", + "valibot": "1.2.0", + "web-worker": "1.5.0" + }, + "regionSHA256": {}, + "htmlSHA256": "abc5283f03bc205ea6fc96433fdcbf2ad947aa38d71cf9517d783368a249c932", + "drawing": "roughjs@4.6.6", + "routing": "elkjs@0.12.1", + "assetSHA256": { + "@fontsource/kalam/files/kalam-latin-400-normal.woff2": "954410601a823f37e219f7930b7446f86afa15621326a7078d56fb9c910135cb", + "@fontsource/kalam/files/kalam-latin-700-normal.woff2": "252063af6ade8b9a744cde4ddad0fc21ea53b8ba711eed121a0c2e8610ea9c93" + }, + "pngSHA256": "32080545de7f6f0617a282ba97c97eaf0ac27e5872bdbdb0d0b8991d4d27a299", + "browser": "156.0.8078.4", + "width": 2160, + "height": 2088, + "scale": 1.5, + "bounds": { + "architecture": { + "x": 20, + "y": 20, + "width": 1400, + "height": 1352 + } + }, + "sources": { + "docs/90-99-views/90-architecture-views/90.135-library-project-architecture.d2": "86aadd565d3f116f9f766d428f30ec9fea9518de360cb7e91ce2ea02ce2bfc3b", + "packages/render/examples/attribution.ts": "58f7914284a69c4ce42db61ec24c06cf9194232ed3402fc7ae12e3ded4187892", + "packages/render/examples/overview-composition.ts": "d0a4ff5da59577b7dcb6b952e4f7ad3424f23f226e4af8f15c223ed53efcec93", + "packages/render/examples/overviews.ts": "e385215fc31d9d2945c06d7df9f66f700e7e980f71154c99225c2db03e4e093f" + } +} \ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.135-library-project-architecture-sketchbook.json.license b/docs/90-99-views/90-architecture-views/90.135-library-project-architecture-sketchbook.json.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.135-library-project-architecture-sketchbook.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.135-library-project-architecture-sketchbook.png b/docs/90-99-views/90-architecture-views/90.135-library-project-architecture-sketchbook.png new file mode 100644 index 0000000..c846d42 Binary files /dev/null and b/docs/90-99-views/90-architecture-views/90.135-library-project-architecture-sketchbook.png differ diff --git a/docs/90-99-views/90-architecture-views/90.135-library-project-architecture-sketchbook.png.license b/docs/90-99-views/90-architecture-views/90.135-library-project-architecture-sketchbook.png.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.135-library-project-architecture-sketchbook.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.135-library-project-architecture-sketchbook.svg b/docs/90-99-views/90-architecture-views/90.135-library-project-architecture-sketchbook.svg new file mode 100644 index 0000000..a89e958 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.135-library-project-architecture-sketchbook.svg @@ -0,0 +1,41 @@ + +{"renderer":{"package":"@deterministic-engineering/render","version":"1.0.0","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":{"scenes":[{"heading":null,"graph":{"id":"90.135-library-project-architecture-scene-1","children":[{"id":"consumer"},{"id":"library"},{"id":"project","children":[{"id":"project.profile"},{"id":"project.scenario"},{"id":"project.inputs"}]},{"id":"framework"},{"id":"render"},{"id":"review"}],"layoutOptions":{"elk.algorithm":"layered","elk.edgeRouting":"ORTHOGONAL","elk.spacing.nodeNode":"30","elk.layered.spacing.nodeNodeBetweenLayers":"30","elk.layered.spacing.edgeNodeBetweenLayers":"12","elk.layered.considerModelOrder.strategy":"NODES_AND_EDGES","elk.hierarchyHandling":"INCLUDE_CHILDREN"}},"icons":{"consumer":"reference","library":"library","framework":"model","render":"selection","review":"evidence","project.profile":"selection","project.scenario":"capture","project.inputs":"document"},"roles":{"consumer":"selection","project":"project-boundary","library":"publication","framework":"external","render":"selection","review":"pending","project.profile":"selection","project.scenario":"capture","project.inputs":"capture"}}]},"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":"#FCF8F3","surface":"#FFFEFB","ink":"#332E2C","muted":"#72635D","border":"#E3D6CA","accent":"#A4492C","secondary":"#526B75","tint":"#F7E9DD","secondaryTint":"#E8EFF0","onAccent":"#FFFFFF","supported":"#356D56","pending":"#8D661A","conflict":"#A03D50"},"inputSHA256":"c355b7a93f81772804cd6463294e436ea14a248f78ab22619ee2496cc6b89f27","model":{"subjects":[{"id":"consumer","type":"rectangle","level":1,"label":"Downstream repositories\nSelected Library and render APIs"},{"id":"project","type":"rectangle","level":1,"label":"Project-owned declarations"},{"id":"project.profile","type":"rectangle","level":2,"label":"Profile\nSelects models, policies and methods"},{"id":"project.scenario","type":"rectangle","level":2,"label":"Scenario\nBinds real project inputs"},{"id":"project.inputs","type":"rectangle","level":2,"label":"Repository inputs\nSysML / Org / D2 / decisions"},{"id":"library","type":"rectangle","level":1,"label":"Engineering Library\nModels / obligations / policies\nScheme method bindings"},{"id":"framework","type":"rectangle","level":1,"label":"Upstream capabilities\nPOO / Yuanxu / Core contracts and Scope\nASCENT Programs / selected methods"},{"id":"render","type":"rectangle","level":1,"label":"Static Render Library\nD2 / HTML / SVG / PNG\nThemes and icon packs"},{"id":"review","type":"rectangle","level":1,"label":"Aitia integration\nTarget independent review boundary"}],"relations":[{"id":"(consumer -> library)[0]","src":"consumer","dst":"library","label":"adopts definitions","srcArrow":"none","dstArrow":"triangle"},{"id":"(consumer -> render)[0]","src":"consumer","dst":"render","label":"uses static views","srcArrow":"none","dstArrow":"triangle"},{"id":"(render -> project.inputs)[0]","src":"render","dst":"project.inputs","label":"reads model and Questions","srcArrow":"none","dstArrow":"triangle"},{"id":"(project.profile -> library)[0]","src":"project.profile","dst":"library","label":"selects definitions","srcArrow":"none","dstArrow":"triangle"},{"id":"project.(scenario -> profile)[0]","src":"project.scenario","dst":"project.profile","label":"binds selection","srcArrow":"none","dstArrow":"triangle"},{"id":"project.(scenario -> inputs)[0]","src":"project.scenario","dst":"project.inputs","label":"captures actual inputs","srcArrow":"none","dstArrow":"triangle"},{"id":"(library -> framework)[0]","src":"library","dst":"framework","label":"uses public capabilities","srcArrow":"none","dstArrow":"triangle"},{"id":"(review -> framework)[0]","src":"review","dst":"framework","label":"requires qualified query context","srcArrow":"none","dstArrow":"triangle"}]},"view":{"source":"docs/90-99-views/90-architecture-views/90.135-library-project-architecture.d2","title":"Engineering Library and project responsibilities","purpose":"architecture","kind":"repository-dependencies","question":{"ref":"scope","text":"Who owns reusable definitions, project choices, method bindings and presentation?","focusRefs":["source"]},"basis":{"captureRef":"design-candidate:current-readme","modelRefs":["project.sysml"],"obligationRefs":["docs/10-19-design/10-architecture/10.142-declarative-render-extensibility-audit.org"],"evidenceRefs":[]}},"questions":[{"ref":"scope","text":"Who owns reusable definitions, project choices, method bindings and presentation?","focusRefs":["source"]}],"references":{"source":"docs/90-99-views/90-architecture-views/90.135-library-project-architecture.d2"},"sourceSHA256":{"docs/90-99-views/90-architecture-views/90.135-library-project-architecture.d2":"86aadd565d3f116f9f766d428f30ec9fea9518de360cb7e91ce2ea02ce2bfc3b","packages/render/examples/attribution.ts":"58f7914284a69c4ce42db61ec24c06cf9194232ed3402fc7ae12e3ded4187892","packages/render/examples/overview-composition.ts":"d0a4ff5da59577b7dcb6b952e4f7ad3424f23f226e4af8f15c223ed53efcec93","packages/render/examples/overviews.ts":"e385215fc31d9d2945c06d7df9f66f700e7e980f71154c99225c2db03e4e093f"},"rendered":{"observation":{"canvas":{"x":0,"y":0,"width":1440,"height":1392},"subjects":[{"id":"project","role":"project-boundary","x":392.8243408203125,"y":561.1906127929688,"width":766.97900390625,"height":330.10870361328125},{"id":"consumer","role":"selection","x":295.8333435058594,"y":180.58004760742188,"width":263.8535461425781,"height":85.39031982421875},{"id":"library","role":"publication","x":302.62872314453125,"y":982,"width":239.17535400390625,"height":115.411376953125},{"id":"project.profile","role":"selection","owner":"project","x":864.4692993164062,"y":792.423583984375,"width":282.03070068359375,"height":84.1339111328125},{"id":"project.scenario","role":"capture","owner":"project","x":750.1666259765625,"y":640.65966796875,"width":208.45452880859375,"height":84.072509765625},{"id":"project.inputs","role":"capture","owner":"project","x":604.0575561523438,"y":792.3423461914062,"width":240.44244384765625,"height":84.1802978515625},{"id":"framework","role":"external","x":317.31500244140625,"y":1185.283935546875,"width":313.83837890625,"height":116.17626953125},{"id":"render","role":"selection","x":566.35693359375,"y":353,"width":237.101318359375,"height":115.31634521484375},{"id":"review","role":"pending","x":571.1666259765625,"y":1013.5283203125,"width":276.005615234375,"height":83.7562255859375}],"relations":["(consumer -> library)[0]","(consumer -> render)[0]","(render -> project.inputs)[0]","(project.profile -> library)[0]","project.(scenario -> profile)[0]","project.(scenario -> inputs)[0]","(library -> framework)[0]","(review -> framework)[0]"],"headings":[{"role":"title","x":20,"y":20,"width":1400,"height":48},{"role":"question","x":20,"y":68,"width":1400,"height":34},{"role":"note","x":20,"y":102,"width":1400,"height":27},{"role":"note","x":20,"y":1345,"width":1400,"height":27}]},"readability":{"minimumTextSize":12,"samples":33},"bounds":{"architecture":{"x":20,"y":20,"width":1400,"height":1352}}}}Engineering Library and project responsibilities?Who owns reusable definitions, project choices, method bindings and presentation?Architecture describes responsibilities and dependencies.{"graph":{"id":"90.135-library-project-architecture-scene-1","children":[{"id":"consumer"},{"id":"library"},{"id":"project","children":[{"id":"project.profile"},{"id":"project.scenario"},{"id":"project.inputs"}]},{"id":"framework"},{"id":"render"},{"id":"review"}],"layoutOptions":{"elk.spacing.nodeNode":"30","elk.layered.spacing.nodeNodeBetweenLayers":"30","elk.algorithm":"layered","elk.direction":"DOWN","elk.edgeRouting":"ORTHOGONAL","elk.layered.spacing.edgeNodeBetweenLayers":"12","elk.layered.considerModelOrder.strategy":"NODES_AND_EDGES","elk.hierarchyHandling":"INCLUDE_CHILDREN"},"edges":[{"id":"(consumer -> library)[0]","sources":["consumer"],"targets":["library"]},{"id":"(consumer -> render)[0]","sources":["consumer"],"targets":["render"]},{"id":"(render -> project.inputs)[0]","sources":["render"],"targets":["project.inputs"]},{"id":"(project.profile -> library)[0]","sources":["project.profile"],"targets":["library"]},{"id":"project.(scenario -> profile)[0]","sources":["project.scenario"],"targets":["project.profile"]},{"id":"project.(scenario -> inputs)[0]","sources":["project.scenario"],"targets":["project.inputs"]},{"id":"(library -> framework)[0]","sources":["library"],"targets":["framework"]},{"id":"(review -> framework)[0]","sources":["review"],"targets":["framework"]}]},"marker":"arrow-ed2cf0e9d928"}Project-owned declarationsadopts definitionsuses static viewsreads model and Questionsselects definitionsbinds selectioncaptures actual inputsuses public capabilitiesrequires qualified query contextDownstream repositoriesSelected Library and render APIsEngineering LibraryModels / obligations / policiesScheme method bindingsProfileSelects models, policies and methodsScenarioBinds real project inputsRepository inputsSysML / Org / D2 / decisionsUpstream capabilitiesPOO / Yuanxu / Core contracts and ScopeASCENT Programs / selected methodsStatic Render LibraryD2 / HTML / SVG / PNGThemes and icon packsAitia integrationTarget independent review boundaryDesign candidate · current source associations retained · no C/Q/R issued \ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.135-library-project-architecture.d2 b/docs/90-99-views/90-architecture-views/90.135-library-project-architecture.d2 new file mode 100644 index 0000000..6204fab --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.135-library-project-architecture.d2 @@ -0,0 +1,167 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + +# Current authored view; arrows mean the relation explicitly written on each edge. +vars: {d2-config: {layout-engine: elk; pad: 24; data: {figure: |json +{ + "title": "Engineering Library and project responsibilities", + "purpose": "architecture", + "kind": "repository-dependencies", + "language": "en", + "width": 1440, + "primary": "scope", + "questions": [ + { + "ref": "scope", + "text": "Who owns reusable definitions, project choices, method bindings and presentation?", + "focusRefs": [ + "source" + ] + } + ], + "references": { + "source": "docs/90-99-views/90-architecture-views/90.135-library-project-architecture.d2" + }, + "basis": { + "captureRef": "design-candidate:current-readme", + "modelRefs": [ + "project.sysml" + ], + "obligationRefs": [ + "docs/10-19-design/10-architecture/10.142-declarative-render-extensibility-audit.org" + ], + "evidenceRefs": [] + }, + "copy": { + "status": "Design candidate \u00b7 current source associations retained \u00b7 no C/Q/R issued", + "description": "Architecture describes responsibilities and dependencies." + }, + "themes": [ + "sketchbook", + "compact" + ], + "icons": [ + "engineering" + ], + "presentation": { + "scenes": [ + { + "heading": null, + "graph": { + "id": "90.135-library-project-architecture-scene-1", + "children": [ + { + "id": "consumer" + }, + { + "id": "library" + }, + { + "id": "project", + "children": [ + { + "id": "project.profile" + }, + { + "id": "project.scenario" + }, + { + "id": "project.inputs" + } + ] + }, + { + "id": "framework" + }, + { + "id": "render" + }, + { + "id": "review" + } + ], + "layoutOptions": { + "elk.algorithm": "layered", + "elk.edgeRouting": "ORTHOGONAL", + "elk.spacing.nodeNode": "30", + "elk.layered.spacing.nodeNodeBetweenLayers": "30", + "elk.layered.spacing.edgeNodeBetweenLayers": "12", + "elk.layered.considerModelOrder.strategy": "NODES_AND_EDGES", + "elk.hierarchyHandling": "INCLUDE_CHILDREN" + } + }, + "icons": { + "consumer": "reference", + "library": "library", + "framework": "model", + "render": "selection", + "review": "evidence", + "project.profile": "selection", + "project.scenario": "capture", + "project.inputs": "document" + }, + "roles": { + "consumer": "selection", + "project": "project-boundary", + "library": "publication", + "framework": "external", + "render": "selection", + "review": "pending", + "project.profile": "selection", + "project.scenario": "capture", + "project.inputs": "capture" + } + } + ] + }, + "variants": [ + { + "name": "sketchbook", + "themes": [ + "sketchbook", + "ember", + "compact", + "layered-down" + ] + }, + { + "name": "node-editor", + "themes": [ + "node-editor", + "ocean", + "compact", + "layered-down" + ] + }, + { + "name": "comfortable", + "themes": [ + "editorial", + "ocean", + "comfortable", + "layered-down" + ] + } + ] +} +| +}}} +consumer: "Downstream repositories\nSelected Library and render APIs" +project: "Project-owned declarations" { + profile: "Profile\nSelects models, policies and methods" + scenario: "Scenario\nBinds real project inputs" + inputs: "Repository inputs\nSysML / Org / D2 / decisions" +} +library: "Engineering Library\nModels / obligations / policies\nScheme method bindings" +framework: "Upstream capabilities\nPOO / Yuanxu / Core contracts and Scope\nASCENT Programs / selected methods" +render: "Static Render Library\nD2 / HTML / SVG / PNG\nThemes and icon packs" +review: "Aitia integration\nTarget independent review boundary" +consumer -> library: adopts definitions +consumer -> render: uses static views +render -> project.inputs: reads model and Questions +project.profile -> library: selects definitions +project.scenario -> project.profile: binds selection +project.scenario -> project.inputs: captures actual inputs +library -> framework: uses public capabilities +review -> framework: requires qualified query context diff --git a/docs/90-99-views/90-architecture-views/90.135-library-project-architecture.json b/docs/90-99-views/90-architecture-views/90.135-library-project-architecture.json new file mode 100644 index 0000000..b940eff --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.135-library-project-architecture.json @@ -0,0 +1,195 @@ +{ + "attribution": { + "copyright": [ + "2026 hardenedlinux Linux Team and Contributors", + "2014 Indian Type Foundry (info@indiantypefoundry.com)" + ], + "license": "LGPL-2.1-or-later AND OFL-1.1" + }, + "observation": { + "canvas": { + "x": 0, + "y": 0, + "width": 1440, + "height": 1392 + }, + "subjects": [ + { + "id": "project", + "role": "project-boundary", + "x": 392.8243408203125, + "y": 561.1906127929688, + "width": 766.97900390625, + "height": 330.10870361328125 + }, + { + "id": "consumer", + "role": "selection", + "x": 295.8333435058594, + "y": 180.58004760742188, + "width": 263.8535461425781, + "height": 85.39031982421875 + }, + { + "id": "library", + "role": "publication", + "x": 302.62872314453125, + "y": 982, + "width": 239.17535400390625, + "height": 115.411376953125 + }, + { + "id": "project.profile", + "role": "selection", + "owner": "project", + "x": 864.4692993164062, + "y": 792.423583984375, + "width": 282.03070068359375, + "height": 84.1339111328125 + }, + { + "id": "project.scenario", + "role": "capture", + "owner": "project", + "x": 750.1666259765625, + "y": 640.65966796875, + "width": 208.45452880859375, + "height": 84.072509765625 + }, + { + "id": "project.inputs", + "role": "capture", + "owner": "project", + "x": 604.0575561523438, + "y": 792.3423461914062, + "width": 240.44244384765625, + "height": 84.1802978515625 + }, + { + "id": "framework", + "role": "external", + "x": 317.31500244140625, + "y": 1185.283935546875, + "width": 313.83837890625, + "height": 116.17626953125 + }, + { + "id": "render", + "role": "selection", + "x": 566.35693359375, + "y": 353, + "width": 237.101318359375, + "height": 115.31634521484375 + }, + { + "id": "review", + "role": "pending", + "x": 571.1666259765625, + "y": 1013.5283203125, + "width": 276.005615234375, + "height": 83.7562255859375 + } + ], + "relations": [ + "(consumer -> library)[0]", + "(consumer -> render)[0]", + "(render -> project.inputs)[0]", + "(project.profile -> library)[0]", + "project.(scenario -> profile)[0]", + "project.(scenario -> inputs)[0]", + "(library -> framework)[0]", + "(review -> framework)[0]" + ], + "headings": [ + { + "role": "title", + "x": 20, + "y": 20, + "width": 1400, + "height": 48 + }, + { + "role": "question", + "x": 20, + "y": 68, + "width": 1400, + "height": 34 + }, + { + "role": "note", + "x": 20, + "y": 102, + "width": 1400, + "height": 27 + }, + { + "role": "note", + "x": 20, + "y": 1345, + "width": 1400, + "height": 27 + } + ] + }, + "canvas": { + "background": "rgb(250, 247, 238)", + "transparent": false + }, + "readability": { + "minimumTextSize": 12, + "samples": 33 + }, + "inputSHA256": "b95e659d6efb2cfa0af75a3561ce66e54236a86e24b8333d071a51b1d972ada0", + "scenes": [ + { + "inputSHA256": "53b42f41ae30dee3670b745104becb0bbcae58548cd90af460d5f1dc00635ba6", + "layoutSHA256": "8394815674f3762817a69af9459d34803f0a8c494b1486a2668a1a9f4b0bf078", + "nodes": 9, + "edges": 8, + "milliseconds": 147.15504200000032 + } + ], + "svgSHA256": [ + "c6726620576f48ce9e9e71fa6885c200112639a8f0acf65d6d364c03b9ce5a0f", + "e7be7822044bb449011aedabc3b7a21ef04896906bfed5ced2760f3b638742b8" + ], + "composedHTMLSHA256": "0fd1a62dd2226eb1368ffcf05130c8c356c313978cb4076e2261fc0578d1d13b", + "dependencies": { + "@fontsource/inter": "5.3.0", + "@fontsource/kalam": "5.3.0", + "@terrastruct/d2": "0.1.33", + "@xyflow/system": "0.0.83", + "elkjs": "0.12.1", + "parse5": "8.0.1", + "roughjs": "4.6.6", + "valibot": "1.2.0", + "web-worker": "1.5.0" + }, + "regionSHA256": {}, + "htmlSHA256": "5388ede2dfaab45c20ca3580b834d9e8f9708e8674fdb1419fa71568e528a0c5", + "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" + }, + "pngSHA256": "58e5e287024ebb93218923912e8cce094709d0d18acd33c999eb9ab34eda46e1", + "browser": "156.0.8078.4", + "width": 2160, + "height": 2088, + "scale": 1.5, + "bounds": { + "architecture": { + "x": 20, + "y": 20, + "width": 1400, + "height": 1352 + } + }, + "sources": { + "docs/90-99-views/90-architecture-views/90.135-library-project-architecture.d2": "86aadd565d3f116f9f766d428f30ec9fea9518de360cb7e91ce2ea02ce2bfc3b", + "packages/render/examples/attribution.ts": "58f7914284a69c4ce42db61ec24c06cf9194232ed3402fc7ae12e3ded4187892", + "packages/render/examples/overview-composition.ts": "d0a4ff5da59577b7dcb6b952e4f7ad3424f23f226e4af8f15c223ed53efcec93", + "packages/render/examples/overviews.ts": "e385215fc31d9d2945c06d7df9f66f700e7e980f71154c99225c2db03e4e093f" + } +} \ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.135-library-project-architecture.json.license b/docs/90-99-views/90-architecture-views/90.135-library-project-architecture.json.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.135-library-project-architecture.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.135-library-project-architecture.png b/docs/90-99-views/90-architecture-views/90.135-library-project-architecture.png new file mode 100644 index 0000000..b19fb81 Binary files /dev/null and b/docs/90-99-views/90-architecture-views/90.135-library-project-architecture.png differ diff --git a/docs/90-99-views/90-architecture-views/90.135-library-project-architecture.png.license b/docs/90-99-views/90-architecture-views/90.135-library-project-architecture.png.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.135-library-project-architecture.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.135-library-project-architecture.svg b/docs/90-99-views/90-architecture-views/90.135-library-project-architecture.svg new file mode 100644 index 0000000..73d702a --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.135-library-project-architecture.svg @@ -0,0 +1,41 @@ + +{"renderer":{"package":"@deterministic-engineering/render","version":"1.0.0","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":{"scenes":[{"heading":null,"graph":{"id":"90.135-library-project-architecture-scene-1","children":[{"id":"consumer"},{"id":"library"},{"id":"project","children":[{"id":"project.profile"},{"id":"project.scenario"},{"id":"project.inputs"}]},{"id":"framework"},{"id":"render"},{"id":"review"}],"layoutOptions":{"elk.algorithm":"layered","elk.edgeRouting":"ORTHOGONAL","elk.spacing.nodeNode":"30","elk.layered.spacing.nodeNodeBetweenLayers":"30","elk.layered.spacing.edgeNodeBetweenLayers":"12","elk.layered.considerModelOrder.strategy":"NODES_AND_EDGES","elk.hierarchyHandling":"INCLUDE_CHILDREN"}},"icons":{"consumer":"reference","library":"library","framework":"model","render":"selection","review":"evidence","project.profile":"selection","project.scenario":"capture","project.inputs":"document"},"roles":{"consumer":"selection","project":"project-boundary","library":"publication","framework":"external","render":"selection","review":"pending","project.profile":"selection","project.scenario":"capture","project.inputs":"capture"}}]},"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":"b95e659d6efb2cfa0af75a3561ce66e54236a86e24b8333d071a51b1d972ada0","model":{"subjects":[{"id":"consumer","type":"rectangle","level":1,"label":"Downstream repositories\nSelected Library and render APIs"},{"id":"project","type":"rectangle","level":1,"label":"Project-owned declarations"},{"id":"project.profile","type":"rectangle","level":2,"label":"Profile\nSelects models, policies and methods"},{"id":"project.scenario","type":"rectangle","level":2,"label":"Scenario\nBinds real project inputs"},{"id":"project.inputs","type":"rectangle","level":2,"label":"Repository inputs\nSysML / Org / D2 / decisions"},{"id":"library","type":"rectangle","level":1,"label":"Engineering Library\nModels / obligations / policies\nScheme method bindings"},{"id":"framework","type":"rectangle","level":1,"label":"Upstream capabilities\nPOO / Yuanxu / Core contracts and Scope\nASCENT Programs / selected methods"},{"id":"render","type":"rectangle","level":1,"label":"Static Render Library\nD2 / HTML / SVG / PNG\nThemes and icon packs"},{"id":"review","type":"rectangle","level":1,"label":"Aitia integration\nTarget independent review boundary"}],"relations":[{"id":"(consumer -> library)[0]","src":"consumer","dst":"library","label":"adopts definitions","srcArrow":"none","dstArrow":"triangle"},{"id":"(consumer -> render)[0]","src":"consumer","dst":"render","label":"uses static views","srcArrow":"none","dstArrow":"triangle"},{"id":"(render -> project.inputs)[0]","src":"render","dst":"project.inputs","label":"reads model and Questions","srcArrow":"none","dstArrow":"triangle"},{"id":"(project.profile -> library)[0]","src":"project.profile","dst":"library","label":"selects definitions","srcArrow":"none","dstArrow":"triangle"},{"id":"project.(scenario -> profile)[0]","src":"project.scenario","dst":"project.profile","label":"binds selection","srcArrow":"none","dstArrow":"triangle"},{"id":"project.(scenario -> inputs)[0]","src":"project.scenario","dst":"project.inputs","label":"captures actual inputs","srcArrow":"none","dstArrow":"triangle"},{"id":"(library -> framework)[0]","src":"library","dst":"framework","label":"uses public capabilities","srcArrow":"none","dstArrow":"triangle"},{"id":"(review -> framework)[0]","src":"review","dst":"framework","label":"requires qualified query context","srcArrow":"none","dstArrow":"triangle"}]},"view":{"source":"docs/90-99-views/90-architecture-views/90.135-library-project-architecture.d2","title":"Engineering Library and project responsibilities","purpose":"architecture","kind":"repository-dependencies","question":{"ref":"scope","text":"Who owns reusable definitions, project choices, method bindings and presentation?","focusRefs":["source"]},"basis":{"captureRef":"design-candidate:current-readme","modelRefs":["project.sysml"],"obligationRefs":["docs/10-19-design/10-architecture/10.142-declarative-render-extensibility-audit.org"],"evidenceRefs":[]}},"questions":[{"ref":"scope","text":"Who owns reusable definitions, project choices, method bindings and presentation?","focusRefs":["source"]}],"references":{"source":"docs/90-99-views/90-architecture-views/90.135-library-project-architecture.d2"},"sourceSHA256":{"docs/90-99-views/90-architecture-views/90.135-library-project-architecture.d2":"86aadd565d3f116f9f766d428f30ec9fea9518de360cb7e91ce2ea02ce2bfc3b","packages/render/examples/attribution.ts":"58f7914284a69c4ce42db61ec24c06cf9194232ed3402fc7ae12e3ded4187892","packages/render/examples/overview-composition.ts":"d0a4ff5da59577b7dcb6b952e4f7ad3424f23f226e4af8f15c223ed53efcec93","packages/render/examples/overviews.ts":"e385215fc31d9d2945c06d7df9f66f700e7e980f71154c99225c2db03e4e093f"},"rendered":{"observation":{"canvas":{"x":0,"y":0,"width":1440,"height":1392},"subjects":[{"id":"project","role":"project-boundary","x":392.8243408203125,"y":561.1906127929688,"width":766.97900390625,"height":330.10870361328125},{"id":"consumer","role":"selection","x":295.8333435058594,"y":180.58004760742188,"width":263.8535461425781,"height":85.39031982421875},{"id":"library","role":"publication","x":302.62872314453125,"y":982,"width":239.17535400390625,"height":115.411376953125},{"id":"project.profile","role":"selection","owner":"project","x":864.4692993164062,"y":792.423583984375,"width":282.03070068359375,"height":84.1339111328125},{"id":"project.scenario","role":"capture","owner":"project","x":750.1666259765625,"y":640.65966796875,"width":208.45452880859375,"height":84.072509765625},{"id":"project.inputs","role":"capture","owner":"project","x":604.0575561523438,"y":792.3423461914062,"width":240.44244384765625,"height":84.1802978515625},{"id":"framework","role":"external","x":317.31500244140625,"y":1185.283935546875,"width":313.83837890625,"height":116.17626953125},{"id":"render","role":"selection","x":566.35693359375,"y":353,"width":237.101318359375,"height":115.31634521484375},{"id":"review","role":"pending","x":571.1666259765625,"y":1013.5283203125,"width":276.005615234375,"height":83.7562255859375}],"relations":["(consumer -> library)[0]","(consumer -> render)[0]","(render -> project.inputs)[0]","(project.profile -> library)[0]","project.(scenario -> profile)[0]","project.(scenario -> inputs)[0]","(library -> framework)[0]","(review -> framework)[0]"],"headings":[{"role":"title","x":20,"y":20,"width":1400,"height":48},{"role":"question","x":20,"y":68,"width":1400,"height":34},{"role":"note","x":20,"y":102,"width":1400,"height":27},{"role":"note","x":20,"y":1345,"width":1400,"height":27}]},"readability":{"minimumTextSize":12,"samples":33},"bounds":{"architecture":{"x":20,"y":20,"width":1400,"height":1352}}}}Engineering Library and project responsibilities?Who owns reusable definitions, project choices, method bindings and presentation?Architecture describes responsibilities and dependencies.{"graph":{"id":"90.135-library-project-architecture-scene-1","children":[{"id":"consumer"},{"id":"library"},{"id":"project","children":[{"id":"project.profile"},{"id":"project.scenario"},{"id":"project.inputs"}]},{"id":"framework"},{"id":"render"},{"id":"review"}],"layoutOptions":{"elk.spacing.nodeNode":"30","elk.layered.spacing.nodeNodeBetweenLayers":"30","elk.algorithm":"layered","elk.edgeRouting":"ORTHOGONAL","elk.layered.spacing.edgeNodeBetweenLayers":"12","elk.layered.considerModelOrder.strategy":"NODES_AND_EDGES","elk.hierarchyHandling":"INCLUDE_CHILDREN"},"edges":[{"id":"(consumer -> library)[0]","sources":["consumer"],"targets":["library"]},{"id":"(consumer -> render)[0]","sources":["consumer"],"targets":["render"]},{"id":"(render -> project.inputs)[0]","sources":["render"],"targets":["project.inputs"]},{"id":"(project.profile -> library)[0]","sources":["project.profile"],"targets":["library"]},{"id":"project.(scenario -> profile)[0]","sources":["project.scenario"],"targets":["project.profile"]},{"id":"project.(scenario -> inputs)[0]","sources":["project.scenario"],"targets":["project.inputs"]},{"id":"(library -> framework)[0]","sources":["library"],"targets":["framework"]},{"id":"(review -> framework)[0]","sources":["review"],"targets":["framework"]}]},"marker":"arrow-ed2cf0e9d928"}Project-owned declarationsadopts definitionsuses static viewsreads model and Questionsselects definitionsbinds selectioncaptures actual inputsuses public capabilitiesrequires qualified query contextDownstream repositoriesSelected Library and render APIsEngineering LibraryModels / obligations / policiesScheme method bindingsProfileSelects models, policies and methodsScenarioBinds real project inputsRepository inputsSysML / Org / D2 / decisionsUpstream capabilitiesPOO / Yuanxu / Core contracts and ScopeASCENT Programs / selected methodsStatic Render LibraryD2 / HTML / SVG / PNGThemes and icon packsAitia integrationTarget independent review boundaryDesign candidate · current source associations retained · no C/Q/R issued \ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.136-model-adaptation-boundaries.d2 b/docs/90-99-views/90-architecture-views/90.136-model-adaptation-boundaries.d2 new file mode 100644 index 0000000..f9586fc --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.136-model-adaptation-boundaries.d2 @@ -0,0 +1,140 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + +vars: {d2-config: {data: {figure: |json +{ + "title": "SDK semantics and rendering adapter boundaries", + "purpose": "architecture", + "kind": "adapter-responsibilities", + "language": "en", + "width": 1120, + "primary": "q", + "questions": [ + { + "ref": "q", + "text": "What does each SDK own, and what may the renderer project?", + "focusRefs": [ + "source", + "d2-adapter", + "sdk-projection", + "source-binding", + "model-view", + "composition-contract" + ] + } + ], + "references": { + "source": "docs/90-99-views/90-architecture-views/90.136-model-adaptation-boundaries.d2", + "d2-adapter": "packages/render/src/d2-figure.ts", + "sdk-projection": "packages/render/src/opensysml.ts", + "source-binding": "packages/render/src/index.ts", + "model-view": "packages/render/src/model-view.ts", + "composition-contract": "packages/render/src/figure.ts" + }, + "basis": { + "captureRef": "design-candidate:model-adaptation", + "modelRefs": [ + "project.sysml" + ], + "obligationRefs": [ + "docs/10-19-design/10-architecture/10.143-sdk-model-adaptation-audit.org" + ], + "evidenceRefs": [] + }, + "copy": { + "description": "Dependencies and trust boundaries; arrows point to consumed inputs.", + "status": "Source-based adapter observations \u00b7 explicit projection limits \u00b7 no C/Q/R issued" + }, + "themes": [ + "sketchbook", + "compact" + ], + "icons": [ + "engineering" + ], + "presentation": { + "scenes": [ + { + "graph": { + "id": "model-adaptation-scene", + "children": [ + { + "id": "project.capture" + }, + { + "id": "project.presentation" + }, + { + "id": "native.d2" + }, + { + "id": "native.sysml" + }, + { + "id": "library.d2" + }, + { + "id": "library.binding" + }, + { + "id": "library.sysml" + }, + { + "id": "library.scene" + } + ], + "layoutOptions": { + "elk.direction": "DOWN", + "elk.edgeRouting": "ORTHOGONAL", + "elk.spacing.nodeNode": "30", + "elk.layered.spacing.nodeNodeBetweenLayers": "32" + } + }, + "icons": { + "project.capture": "capture", + "project.presentation": "selection", + "native.d2": "model", + "native.sysml": "model", + "library.d2": "document", + "library.binding": "evidence", + "library.sysml": "reference", + "library.scene": "decision" + }, + "roles": { + "project.capture": "capture", + "project.presentation": "capture", + "native.d2": "external", + "native.sysml": "external", + "library.d2": "capture", + "library.binding": "capture", + "library.sysml": "capture", + "library.scene": "capture" + } + } + ] + } +} +| +}}} +project: Project-owned inputs { + capture: "Captured SDK result\nModel hash / view / original JSON" + presentation: "View declarations\nQuestions / captions / themes / graph" +} +native: Semantic authorities { + d2: "D2 SDK\nSyntax / IDs / members / arrowheads" + sysml: "OpenSysML SDK\nParse / check / renderView / protojson" +} +library: Render Library { + d2: "D2 observation adapter\nPreserve exact SDK output" + binding: "Source binding\nMatch model hash / view / captured bytes" + sysml: "Direct SDK model projection\nExplicit parents / checked port references" + scene: "TS scene composition\nELK layout / measured SVG" +} +library.d2 -> native.d2: consumes compiled observations +library.binding -> project.capture: checks selected snapshot +library.binding -> library.sysml: projects matched capture +library.sysml -> native.sysml: consumes decoded RenderedView +library.scene -> library.binding: consumes bound model +library.scene -> library.d2: consumes observed model +library.scene -> project.presentation: applies explicit presentation diff --git a/docs/90-99-views/90-architecture-views/90.136-model-adaptation-boundaries.json b/docs/90-99-views/90-architecture-views/90.136-model-adaptation-boundaries.json new file mode 100644 index 0000000..811c847 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.136-model-adaptation-boundaries.json @@ -0,0 +1,188 @@ +{ + "attribution": { + "copyright": [ + "2026 hardenedlinux Linux Team and Contributors", + "2014 Indian Type Foundry (info@indiantypefoundry.com)" + ], + "license": "LGPL-2.1-or-later AND OFL-1.1" + }, + "observation": { + "canvas": { + "x": 0, + "y": 0, + "width": 1120, + "height": 882.984375 + }, + "subjects": [ + { + "id": "project.capture", + "role": "capture", + "x": 80.75244140625, + "y": 532.1817016601562, + "width": 266.7695617675781, + "height": 85.65008544921875 + }, + { + "id": "project.presentation", + "role": "capture", + "x": 455.0858154296875, + "y": 356.5753173828125, + "width": 290.09326171875, + "height": 85.3883056640625 + }, + { + "id": "native.d2", + "role": "external", + "x": 756.0407104492188, + "y": 532.752197265625, + "width": 290.43756103515625, + "height": 83.836669921875 + }, + { + "id": "native.sysml", + "role": "external", + "x": 386.89007568359375, + "y": 708.4104614257812, + "width": 292.02374267578125, + "height": 84.13189697265625 + }, + { + "id": "library.d2", + "role": "capture", + "x": 775.0781860351562, + "y": 356.6090087890625, + "width": 252.44854736328125, + "height": 84.11648559570312 + }, + { + "id": "library.binding", + "role": "capture", + "x": 108.65167236328125, + "y": 356.3376159667969, + "width": 317.0888366699219, + "height": 84.1783447265625 + }, + { + "id": "library.sysml", + "role": "capture", + "x": 377.4210205078125, + "y": 532.27490234375, + "width": 311.3126220703125, + "height": 84.1707763671875 + }, + { + "id": "library.scene", + "role": "capture", + "x": 208.19863891601562, + "y": 180.99948120117188, + "width": 235.85870361328125, + "height": 83.37893676757812 + } + ], + "relations": [ + "(library.d2 -> native.d2)[0]", + "(library.binding -> project.capture)[0]", + "library.(binding -> sysml)[0]", + "(library.sysml -> native.sysml)[0]", + "library.(scene -> binding)[0]", + "library.(scene -> d2)[0]", + "(library.scene -> project.presentation)[0]" + ], + "headings": [ + { + "role": "title", + "x": 20, + "y": 20, + "width": 1080, + "height": 48 + }, + { + "role": "question", + "x": 20, + "y": 68, + "width": 1080, + "height": 34 + }, + { + "role": "note", + "x": 20, + "y": 102, + "width": 1080, + "height": 27 + }, + { + "role": "note", + "x": 20, + "y": 835.984375, + "width": 1080, + "height": 27 + } + ] + }, + "canvas": { + "background": "rgb(250, 247, 238)", + "transparent": false + }, + "readability": { + "minimumTextSize": 11.999713740458015, + "samples": 28 + }, + "inputSHA256": "550bc7e05269c34573a7247268e67cc052ed0b981343abb948c9e4a9f0c09dc5", + "scenes": [ + { + "inputSHA256": "e7671b8d6012a5ccf53397645b590a82a28a81794a1a2f6de3fe9ccd39fca304", + "layoutSHA256": "a58a7e10d0a7da0dcebdca5e960ad518c5bdbbc7b636ee58d497c30a5e213df7", + "nodes": 8, + "edges": 7, + "milliseconds": 147.2692500000012 + } + ], + "svgSHA256": [ + "978f39c9f6a7558355c2039a97b16d4c9729c485b5b2742baea9efa1e3dc464e", + "827ca8e6f96b7655990cf6fce1b7c952ca2ea3f91941bd1de1b78d2bd6a19e08" + ], + "composedHTMLSHA256": "4d05a5bfa6ae1e2109d354296913150bd09167984390331c5355dbf316cc4b64", + "dependencies": { + "@fontsource/inter": "5.3.0", + "@fontsource/kalam": "5.3.0", + "@terrastruct/d2": "0.1.33", + "@xyflow/system": "0.0.83", + "elkjs": "0.12.1", + "parse5": "8.0.1", + "roughjs": "4.6.6", + "valibot": "1.2.0", + "web-worker": "1.5.0" + }, + "regionSHA256": {}, + "htmlSHA256": "b6be6cea6c93e30ac804ca338a73d65dde4f800b9ea537e68e3c52ad3b311480", + "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" + }, + "pngSHA256": "efbac967aaf09f6e88aee1fd65b09343b06e68a4be6dc38e1b48fcb235bc7747", + "browser": "156.0.8078.4", + "width": 1680, + "height": 1325, + "scale": 1.5, + "bounds": { + "architecture": { + "x": 20, + "y": 20, + "width": 1080, + "height": 842.984375 + } + }, + "sources": { + "docs/90-99-views/90-architecture-views/90.136-model-adaptation-boundaries.d2": "c57a7d1f199223a105c69add9adc8dfc09ecc9a264975a32923f8111de03a0f6", + "packages/render/examples/attribution.ts": "58f7914284a69c4ce42db61ec24c06cf9194232ed3402fc7ae12e3ded4187892", + "packages/render/examples/overview-composition.ts": "d0a4ff5da59577b7dcb6b952e4f7ad3424f23f226e4af8f15c223ed53efcec93", + "packages/render/examples/overviews.ts": "e385215fc31d9d2945c06d7df9f66f700e7e980f71154c99225c2db03e4e093f", + "packages/render/src/d2-figure.ts": "dfd8821ed04ff45206d6b9e7fac8ba6b47a138426101589a760318143f3ddece", + "packages/render/src/figure.ts": "4f994cc394859027e4986635bffc1b45144a01140e19a1ce6b7b5748fa58bbd7", + "packages/render/src/index.ts": "bc4367c1acbb3b7c3cbf15885a5f3ec78ce36d8216861f44ca1a08d12dc297d4", + "packages/render/src/model-view.ts": "8a2c575c8c1a2f09770fb4cfdbe6718121a66c4fe8b32c97f7b2d88c9f7a57fc", + "packages/render/src/opensysml.ts": "e4c76a741d2e66b3f403f3a57691493b0f95cbc667bd3f710d09463b4b8087ae" + } +} \ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.136-model-adaptation-boundaries.json.license b/docs/90-99-views/90-architecture-views/90.136-model-adaptation-boundaries.json.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.136-model-adaptation-boundaries.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.136-model-adaptation-boundaries.png b/docs/90-99-views/90-architecture-views/90.136-model-adaptation-boundaries.png new file mode 100644 index 0000000..13d39bf Binary files /dev/null and b/docs/90-99-views/90-architecture-views/90.136-model-adaptation-boundaries.png differ diff --git a/docs/90-99-views/90-architecture-views/90.136-model-adaptation-boundaries.png.license b/docs/90-99-views/90-architecture-views/90.136-model-adaptation-boundaries.png.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.136-model-adaptation-boundaries.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.136-model-adaptation-boundaries.svg b/docs/90-99-views/90-architecture-views/90.136-model-adaptation-boundaries.svg new file mode 100644 index 0000000..ad3b4ba --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.136-model-adaptation-boundaries.svg @@ -0,0 +1,41 @@ + +{"renderer":{"package":"@deterministic-engineering/render","version":"1.0.0","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":{"scenes":[{"graph":{"id":"model-adaptation-scene","children":[{"id":"project.capture"},{"id":"project.presentation"},{"id":"native.d2"},{"id":"native.sysml"},{"id":"library.d2"},{"id":"library.binding"},{"id":"library.sysml"},{"id":"library.scene"}],"layoutOptions":{"elk.direction":"DOWN","elk.edgeRouting":"ORTHOGONAL","elk.spacing.nodeNode":"30","elk.layered.spacing.nodeNodeBetweenLayers":"32"}},"icons":{"project.capture":"capture","project.presentation":"selection","native.d2":"model","native.sysml":"model","library.d2":"document","library.binding":"evidence","library.sysml":"reference","library.scene":"decision"},"roles":{"project.capture":"capture","project.presentation":"capture","native.d2":"external","native.sysml":"external","library.d2":"capture","library.binding":"capture","library.sysml":"capture","library.scene":"capture"}}]},"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":"550bc7e05269c34573a7247268e67cc052ed0b981343abb948c9e4a9f0c09dc5","model":{"subjects":[{"id":"project","type":"rectangle","level":1,"label":"Project-owned inputs"},{"id":"project.capture","type":"rectangle","level":2,"label":"Captured SDK result\nModel hash / view / original JSON"},{"id":"project.presentation","type":"rectangle","level":2,"label":"View declarations\nQuestions / captions / themes / graph"},{"id":"native","type":"rectangle","level":1,"label":"Semantic authorities"},{"id":"native.d2","type":"rectangle","level":2,"label":"D2 SDK\nSyntax / IDs / members / arrowheads"},{"id":"native.sysml","type":"rectangle","level":2,"label":"OpenSysML SDK\nParse / check / renderView / protojson"},{"id":"library","type":"rectangle","level":1,"label":"Render Library"},{"id":"library.d2","type":"rectangle","level":2,"label":"D2 observation adapter\nPreserve exact SDK output"},{"id":"library.binding","type":"rectangle","level":2,"label":"Source binding\nMatch model hash / view / captured bytes"},{"id":"library.sysml","type":"rectangle","level":2,"label":"Direct SDK model projection\nExplicit parents / checked port references"},{"id":"library.scene","type":"rectangle","level":2,"label":"TS scene composition\nELK layout / measured SVG"}],"relations":[{"id":"(library.d2 -> native.d2)[0]","src":"library.d2","dst":"native.d2","label":"consumes compiled observations","srcArrow":"none","dstArrow":"triangle"},{"id":"(library.binding -> project.capture)[0]","src":"library.binding","dst":"project.capture","label":"checks selected snapshot","srcArrow":"none","dstArrow":"triangle"},{"id":"library.(binding -> sysml)[0]","src":"library.binding","dst":"library.sysml","label":"projects matched capture","srcArrow":"none","dstArrow":"triangle"},{"id":"(library.sysml -> native.sysml)[0]","src":"library.sysml","dst":"native.sysml","label":"consumes decoded RenderedView","srcArrow":"none","dstArrow":"triangle"},{"id":"library.(scene -> binding)[0]","src":"library.scene","dst":"library.binding","label":"consumes bound model","srcArrow":"none","dstArrow":"triangle"},{"id":"library.(scene -> d2)[0]","src":"library.scene","dst":"library.d2","label":"consumes observed model","srcArrow":"none","dstArrow":"triangle"},{"id":"(library.scene -> project.presentation)[0]","src":"library.scene","dst":"project.presentation","label":"applies explicit presentation","srcArrow":"none","dstArrow":"triangle"}]},"view":{"source":"docs/90-99-views/90-architecture-views/90.136-model-adaptation-boundaries.d2","title":"SDK semantics and rendering adapter boundaries","purpose":"architecture","kind":"adapter-responsibilities","question":{"ref":"q","text":"What does each SDK own, and what may the renderer project?","focusRefs":["source","d2-adapter","sdk-projection","source-binding","model-view","composition-contract"]},"basis":{"captureRef":"design-candidate:model-adaptation","modelRefs":["project.sysml"],"obligationRefs":["docs/10-19-design/10-architecture/10.143-sdk-model-adaptation-audit.org"],"evidenceRefs":[]}},"questions":[{"ref":"q","text":"What does each SDK own, and what may the renderer project?","focusRefs":["source","d2-adapter","sdk-projection","source-binding","model-view","composition-contract"]}],"references":{"composition-contract":"packages/render/src/figure.ts","d2-adapter":"packages/render/src/d2-figure.ts","model-view":"packages/render/src/model-view.ts","sdk-projection":"packages/render/src/opensysml.ts","source":"docs/90-99-views/90-architecture-views/90.136-model-adaptation-boundaries.d2","source-binding":"packages/render/src/index.ts"},"sourceSHA256":{"docs/90-99-views/90-architecture-views/90.136-model-adaptation-boundaries.d2":"c57a7d1f199223a105c69add9adc8dfc09ecc9a264975a32923f8111de03a0f6","packages/render/examples/attribution.ts":"58f7914284a69c4ce42db61ec24c06cf9194232ed3402fc7ae12e3ded4187892","packages/render/examples/overview-composition.ts":"d0a4ff5da59577b7dcb6b952e4f7ad3424f23f226e4af8f15c223ed53efcec93","packages/render/examples/overviews.ts":"e385215fc31d9d2945c06d7df9f66f700e7e980f71154c99225c2db03e4e093f","packages/render/src/d2-figure.ts":"dfd8821ed04ff45206d6b9e7fac8ba6b47a138426101589a760318143f3ddece","packages/render/src/figure.ts":"4f994cc394859027e4986635bffc1b45144a01140e19a1ce6b7b5748fa58bbd7","packages/render/src/index.ts":"bc4367c1acbb3b7c3cbf15885a5f3ec78ce36d8216861f44ca1a08d12dc297d4","packages/render/src/model-view.ts":"8a2c575c8c1a2f09770fb4cfdbe6718121a66c4fe8b32c97f7b2d88c9f7a57fc","packages/render/src/opensysml.ts":"e4c76a741d2e66b3f403f3a57691493b0f95cbc667bd3f710d09463b4b8087ae"},"rendered":{"observation":{"canvas":{"x":0,"y":0,"width":1120,"height":882.984375},"subjects":[{"id":"project.capture","role":"capture","x":80.75244140625,"y":532.1817016601562,"width":266.7695617675781,"height":85.65008544921875},{"id":"project.presentation","role":"capture","x":455.0858154296875,"y":356.5753173828125,"width":290.09326171875,"height":85.3883056640625},{"id":"native.d2","role":"external","x":756.0407104492188,"y":532.752197265625,"width":290.43756103515625,"height":83.836669921875},{"id":"native.sysml","role":"external","x":386.89007568359375,"y":708.4104614257812,"width":292.02374267578125,"height":84.13189697265625},{"id":"library.d2","role":"capture","x":775.0781860351562,"y":356.6090087890625,"width":252.44854736328125,"height":84.11648559570312},{"id":"library.binding","role":"capture","x":108.65167236328125,"y":356.3376159667969,"width":317.0888366699219,"height":84.1783447265625},{"id":"library.sysml","role":"capture","x":377.4210205078125,"y":532.27490234375,"width":311.3126220703125,"height":84.1707763671875},{"id":"library.scene","role":"capture","x":208.19863891601562,"y":180.99948120117188,"width":235.85870361328125,"height":83.37893676757812}],"relations":["(library.d2 -> native.d2)[0]","(library.binding -> project.capture)[0]","library.(binding -> sysml)[0]","(library.sysml -> native.sysml)[0]","library.(scene -> binding)[0]","library.(scene -> d2)[0]","(library.scene -> project.presentation)[0]"],"headings":[{"role":"title","x":20,"y":20,"width":1080,"height":48},{"role":"question","x":20,"y":68,"width":1080,"height":34},{"role":"note","x":20,"y":102,"width":1080,"height":27},{"role":"note","x":20,"y":835.984375,"width":1080,"height":27}]},"readability":{"minimumTextSize":11.999713740458015,"samples":28},"bounds":{"architecture":{"x":20,"y":20,"width":1080,"height":842.984375}}}}SDK semantics and rendering adapter boundaries?What does each SDK own, and what may the renderer project?Dependencies and trust boundaries; arrows point to consumed inputs.{"graph":{"id":"model-adaptation-scene","children":[{"id":"project.capture"},{"id":"project.presentation"},{"id":"native.d2"},{"id":"native.sysml"},{"id":"library.d2"},{"id":"library.binding"},{"id":"library.sysml"},{"id":"library.scene"}],"layoutOptions":{"elk.spacing.nodeNode":"30","elk.layered.spacing.nodeNodeBetweenLayers":"32","elk.direction":"DOWN","elk.edgeRouting":"ORTHOGONAL"},"edges":[{"id":"(library.d2 -> native.d2)[0]","sources":["library.d2"],"targets":["native.d2"]},{"id":"(library.binding -> project.capture)[0]","sources":["library.binding"],"targets":["project.capture"]},{"id":"library.(binding -> sysml)[0]","sources":["library.binding"],"targets":["library.sysml"]},{"id":"(library.sysml -> native.sysml)[0]","sources":["library.sysml"],"targets":["native.sysml"]},{"id":"library.(scene -> binding)[0]","sources":["library.scene"],"targets":["library.binding"]},{"id":"library.(scene -> d2)[0]","sources":["library.scene"],"targets":["library.d2"]},{"id":"(library.scene -> project.presentation)[0]","sources":["library.scene"],"targets":["project.presentation"]}]},"marker":"arrow-0973112946a1"}consumes compiled observationschecks selected snapshotprojects matched captureconsumes decoded RenderedViewconsumes bound modelconsumes observed modelapplies explicit presentationCaptured SDK resultModel hash / view / original JSONView declarationsQuestions / captions / themes / graphD2 SDKSyntax / IDs / members / arrowheadsOpenSysML SDKParse / check / renderView / protojsonD2 observation adapterPreserve exact SDK outputSource bindingMatch model hash / view / captured bytesDirect SDK model projectionExplicit parents / checked port referencesTS scene compositionELK layout / measured SVGSource-based adapter observations · explicit projection limits · no C/Q/R issued \ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.137-functional-render-composition-sketchbook.json b/docs/90-99-views/90-architecture-views/90.137-functional-render-composition-sketchbook.json new file mode 100644 index 0000000..5573daf --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.137-functional-render-composition-sketchbook.json @@ -0,0 +1,179 @@ +{ + "attribution": { + "copyright": [ + "2026 hardenedlinux Linux Team and Contributors", + "2014 Indian Type Foundry (info@indiantypefoundry.com)" + ], + "license": "LGPL-2.1-or-later AND OFL-1.1" + }, + "observation": { + "canvas": { + "x": 0, + "y": 0, + "width": 1440, + "height": 907 + }, + "subjects": [ + { + "id": "model", + "role": "external", + "x": 244.82435607910156, + "y": 732.1906127929688, + "width": 289.30157470703125, + "height": 85.85986328125 + }, + { + "id": "composition", + "role": "default", + "x": 770.25, + "y": 548.580078125, + "width": 372.8350830078125, + "height": 85.3902587890625 + }, + { + "id": "themes", + "role": "publication", + "x": 873.9620361328125, + "y": 732.7611694335938, + "width": 348.5826416015625, + "height": 83.838623046875 + }, + { + "id": "icons", + "role": "selection", + "x": 557.4692993164062, + "y": 732.423583984375, + "width": 293.03070068359375, + "height": 84.1339111328125 + }, + { + "id": "export", + "role": "default", + "x": 735.75, + "y": 364.6357727050781, + "width": 330.4544677734375, + "height": 84.096435546875 + }, + { + "id": "layout", + "role": "external", + "x": 497.8075866699219, + "y": 548.3423461914062, + "width": 248.44241333007812, + "height": 84.18035888671875 + }, + { + "id": "host", + "role": "capture", + "x": 713.4146728515625, + "y": 180.28384399414062, + "width": 281.322021484375, + "height": 84.17276000976562 + } + ], + "relations": [ + "(composition -> model)[0]", + "(composition -> themes)[0]", + "(composition -> icons)[0]", + "(export -> composition)[0]", + "(export -> layout)[0]", + "(host -> model)[0]", + "(host -> export)[0]" + ], + "headings": [ + { + "role": "title", + "x": 20, + "y": 20, + "width": 1400, + "height": 48 + }, + { + "role": "question", + "x": 20, + "y": 68, + "width": 1400, + "height": 34 + }, + { + "role": "note", + "x": 20, + "y": 102, + "width": 1400, + "height": 27 + }, + { + "role": "note", + "x": 20, + "y": 860, + "width": 1400, + "height": 27 + } + ] + }, + "canvas": { + "background": "rgb(252, 248, 243)", + "transparent": false + }, + "readability": { + "minimumTextSize": 12, + "samples": 26 + }, + "inputSHA256": "7b620a6869fe1da9b9b31b84b61a0a5922ae9b56c4a0b7af65f4c5fd6e8e98b3", + "scenes": [ + { + "inputSHA256": "0da9cdbf8969d8190c5a555ba58d3c733f14452e07d3b7fb42e16a3d02db4bad", + "layoutSHA256": "7b8725fc4b58e91d3d4a77ff6b45eb20f8e1c4cd38c66060c56d2fef68448aff", + "nodes": 7, + "edges": 7, + "milliseconds": 152.79883299999892 + } + ], + "svgSHA256": [ + "8874e8785bc43b351c117d9a1050737799b51fcde4ecc5d0e639bcb8a69f2892", + "6d4183fb91de9df3744906bcecb366adcf9a0800f45f591f54d4fea8c5df9519" + ], + "composedHTMLSHA256": "0c7e2ced5efaeca77bbe62750c3cd4383ac32ba54c6004f3995af9fcab5d2ddb", + "dependencies": { + "@fontsource/inter": "5.3.0", + "@fontsource/kalam": "5.3.0", + "@terrastruct/d2": "0.1.33", + "@xyflow/system": "0.0.83", + "elkjs": "0.12.1", + "parse5": "8.0.1", + "roughjs": "4.6.6", + "valibot": "1.2.0", + "web-worker": "1.5.0" + }, + "regionSHA256": {}, + "htmlSHA256": "adf260ece2dcb5a52d7129b5c8b2c1719e6512531fc46a40b9ae1d98ab2a3b34", + "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" + }, + "pngSHA256": "fbd320e0a4802126326247f6fecf8ad3832728f3de195cd622755ad7c629f187", + "browser": "156.0.8078.4", + "width": 2160, + "height": 1361, + "scale": 1.5, + "bounds": { + "architecture": { + "x": 20, + "y": 20, + "width": 1400, + "height": 867 + } + }, + "sources": { + "docs/90-99-views/90-architecture-views/90.137-functional-render-composition.d2": "4d830b597886ffb1d45eb637f3b7ebe9b476f299b6258cae85c7f93613eef264", + "packages/render/examples/attribution.ts": "58f7914284a69c4ce42db61ec24c06cf9194232ed3402fc7ae12e3ded4187892", + "packages/render/examples/overview-composition.ts": "d0a4ff5da59577b7dcb6b952e4f7ad3424f23f226e4af8f15c223ed53efcec93", + "packages/render/examples/overviews.ts": "e385215fc31d9d2945c06d7df9f66f700e7e980f71154c99225c2db03e4e093f", + "packages/render/src/export.ts": "791963ea500bb6c08af8def6605b1366b5afc887796862f01b3ee76465dbfab2", + "packages/render/src/heading.ts": "3057aaf327fd7c76dee43f46b0e5bb7a2f0bd1b36bc15a3490224be41566de17", + "packages/render/src/presentation-theme.ts": "50873ceac1662bafdc8ca0993be1745f4679c01c73c5f00469d4493c025f0888", + "packages/render/src/scene-export.ts": "f5ba1250e1fe5e6c952ada3bc501979e4f9b8a8a0506a62a6e4cebdaf256a217" + } +} \ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.137-functional-render-composition-sketchbook.json.license b/docs/90-99-views/90-architecture-views/90.137-functional-render-composition-sketchbook.json.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.137-functional-render-composition-sketchbook.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.137-functional-render-composition-sketchbook.png b/docs/90-99-views/90-architecture-views/90.137-functional-render-composition-sketchbook.png new file mode 100644 index 0000000..f001ab6 Binary files /dev/null and b/docs/90-99-views/90-architecture-views/90.137-functional-render-composition-sketchbook.png differ diff --git a/docs/90-99-views/90-architecture-views/90.137-functional-render-composition-sketchbook.png.license b/docs/90-99-views/90-architecture-views/90.137-functional-render-composition-sketchbook.png.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.137-functional-render-composition-sketchbook.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.137-functional-render-composition-sketchbook.svg b/docs/90-99-views/90-architecture-views/90.137-functional-render-composition-sketchbook.svg new file mode 100644 index 0000000..05923bc --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.137-functional-render-composition-sketchbook.svg @@ -0,0 +1,41 @@ + +{"renderer":{"package":"@deterministic-engineering/render","version":"1.0.0","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":{"scenes":[{"graph":{"id":"functional-composition","children":[{"id":"model"},{"id":"composition"},{"id":"themes"},{"id":"icons"},{"id":"export"},{"id":"layout"},{"id":"host"}]},"icons":{"model":"model","composition":"selection","themes":"library","icons":"reference","export":"document","layout":"model","host":"capture"},"roles":{"themes":"publication","icons":"selection","host":"capture","model":"external","layout":"external"}}]},"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":"#FCF8F3","surface":"#FFFEFB","ink":"#332E2C","muted":"#72635D","border":"#E3D6CA","accent":"#A4492C","secondary":"#526B75","tint":"#F7E9DD","secondaryTint":"#E8EFF0","onAccent":"#FFFFFF","supported":"#356D56","pending":"#8D661A","conflict":"#A03D50"},"inputSHA256":"7b620a6869fe1da9b9b31b84b61a0a5922ae9b56c4a0b7af65f4c5fd6e8e98b3","model":{"subjects":[{"id":"model","type":"rectangle","level":1,"label":"Model adapters\nOfficial D2 / OpenSysML observations"},{"id":"composition","type":"rectangle","level":1,"label":"Pure composition\ncomposeFigure / composeHeading / composeDiagram"},{"id":"themes","type":"rectangle","level":1,"label":"Visual resources\nStyle + palette + type + density + role markers"},{"id":"icons","type":"rectangle","level":1,"label":"SVG assets\nReplaceable domain icons and surfaces"},{"id":"export","type":"rectangle","level":1,"label":"Browser export effect\nFonts / actual bounds / SVG / PNG / receipt"},{"id":"layout","type":"rectangle","level":1,"label":"ELK layout\nMeasured node and label boxes"},{"id":"host","type":"rectangle","level":1,"label":"Host project\nSource acquisition and explicit writes"}],"relations":[{"id":"(composition -> model)[0]","src":"composition","dst":"model","label":"reads captured model","srcArrow":"none","dstArrow":"triangle"},{"id":"(composition -> themes)[0]","src":"composition","dst":"themes","label":"selects visual layers","srcArrow":"none","dstArrow":"triangle"},{"id":"(composition -> icons)[0]","src":"composition","dst":"icons","label":"selects assets","srcArrow":"none","dstArrow":"triangle"},{"id":"(export -> composition)[0]","src":"export","dst":"composition","label":"consumes composed HTML","srcArrow":"none","dstArrow":"triangle"},{"id":"(export -> layout)[0]","src":"export","dst":"layout","label":"delegates geometry","srcArrow":"none","dstArrow":"triangle"},{"id":"(host -> model)[0]","src":"host","dst":"model","label":"captures inputs","srcArrow":"none","dstArrow":"triangle"},{"id":"(host -> export)[0]","src":"host","dst":"export","label":"requests image export","srcArrow":"none","dstArrow":"triangle"}]},"view":{"source":"docs/90-99-views/90-architecture-views/90.137-functional-render-composition.d2","title":"Functional rendering: independent owners and replaceable resources","purpose":"architecture","kind":"render-composition","question":{"ref":"boundaries","text":"What can a downstream project compose without replacing model or layout semantics?","focusRefs":["source","theme","heading","measurement","export"]},"basis":{"captureRef":"design-candidate:functional-render","modelRefs":[],"obligationRefs":["docs/10-19-design/10-architecture/10.144-functional-themes-layouts-and-package-examples.org"],"evidenceRefs":[]}},"questions":[{"ref":"boundaries","text":"What can a downstream project compose without replacing model or layout semantics?","focusRefs":["source","theme","heading","measurement","export"]}],"references":{"export":"packages/render/src/export.ts","heading":"packages/render/src/heading.ts","measurement":"packages/render/src/scene-export.ts","source":"docs/90-99-views/90-architecture-views/90.137-functional-render-composition.d2","theme":"packages/render/src/presentation-theme.ts"},"sourceSHA256":{"docs/90-99-views/90-architecture-views/90.137-functional-render-composition.d2":"4d830b597886ffb1d45eb637f3b7ebe9b476f299b6258cae85c7f93613eef264","packages/render/examples/attribution.ts":"58f7914284a69c4ce42db61ec24c06cf9194232ed3402fc7ae12e3ded4187892","packages/render/examples/overview-composition.ts":"d0a4ff5da59577b7dcb6b952e4f7ad3424f23f226e4af8f15c223ed53efcec93","packages/render/examples/overviews.ts":"e385215fc31d9d2945c06d7df9f66f700e7e980f71154c99225c2db03e4e093f","packages/render/src/export.ts":"791963ea500bb6c08af8def6605b1366b5afc887796862f01b3ee76465dbfab2","packages/render/src/heading.ts":"3057aaf327fd7c76dee43f46b0e5bb7a2f0bd1b36bc15a3490224be41566de17","packages/render/src/presentation-theme.ts":"50873ceac1662bafdc8ca0993be1745f4679c01c73c5f00469d4493c025f0888","packages/render/src/scene-export.ts":"f5ba1250e1fe5e6c952ada3bc501979e4f9b8a8a0506a62a6e4cebdaf256a217"},"rendered":{"observation":{"canvas":{"x":0,"y":0,"width":1440,"height":907},"subjects":[{"id":"model","role":"external","x":244.82435607910156,"y":732.1906127929688,"width":289.30157470703125,"height":85.85986328125},{"id":"composition","role":"default","x":770.25,"y":548.580078125,"width":372.8350830078125,"height":85.3902587890625},{"id":"themes","role":"publication","x":873.9620361328125,"y":732.7611694335938,"width":348.5826416015625,"height":83.838623046875},{"id":"icons","role":"selection","x":557.4692993164062,"y":732.423583984375,"width":293.03070068359375,"height":84.1339111328125},{"id":"export","role":"default","x":735.75,"y":364.6357727050781,"width":330.4544677734375,"height":84.096435546875},{"id":"layout","role":"external","x":497.8075866699219,"y":548.3423461914062,"width":248.44241333007812,"height":84.18035888671875},{"id":"host","role":"capture","x":713.4146728515625,"y":180.28384399414062,"width":281.322021484375,"height":84.17276000976562}],"relations":["(composition -> model)[0]","(composition -> themes)[0]","(composition -> icons)[0]","(export -> composition)[0]","(export -> layout)[0]","(host -> model)[0]","(host -> export)[0]"],"headings":[{"role":"title","x":20,"y":20,"width":1400,"height":48},{"role":"question","x":20,"y":68,"width":1400,"height":34},{"role":"note","x":20,"y":102,"width":1400,"height":27},{"role":"note","x":20,"y":860,"width":1400,"height":27}]},"readability":{"minimumTextSize":12,"samples":26},"bounds":{"architecture":{"x":20,"y":20,"width":1400,"height":867}}}}Functional rendering: independent owners and replaceable resources?What can a downstream project compose without replacing model or layout semantics?Architecture dependencies; arrows point to the capability consumed.{"graph":{"id":"functional-composition","children":[{"id":"model"},{"id":"composition"},{"id":"themes"},{"id":"icons"},{"id":"export"},{"id":"layout"},{"id":"host"}],"layoutOptions":{"elk.spacing.nodeNode":"24","elk.layered.spacing.nodeNodeBetweenLayers":"36","elk.algorithm":"layered","elk.direction":"DOWN","elk.edgeRouting":"ORTHOGONAL"},"edges":[{"id":"(composition -> model)[0]","sources":["composition"],"targets":["model"]},{"id":"(composition -> themes)[0]","sources":["composition"],"targets":["themes"]},{"id":"(composition -> icons)[0]","sources":["composition"],"targets":["icons"]},{"id":"(export -> composition)[0]","sources":["export"],"targets":["composition"]},{"id":"(export -> layout)[0]","sources":["export"],"targets":["layout"]},{"id":"(host -> model)[0]","sources":["host"],"targets":["model"]},{"id":"(host -> export)[0]","sources":["host"],"targets":["export"]}]},"marker":"arrow-39efee39ff2c"}reads captured modelselects visual layersselects assetsconsumes composed HTMLdelegates geometrycaptures inputsrequests image exportModel adaptersOfficial D2 / OpenSysML observationsPure compositioncomposeFigure / composeHeading / composeDiagramVisual resourcesStyle + palette + type + density + role markersSVG assetsReplaceable domain icons and surfacesBrowser export effectFonts / actual bounds / SVG / PNG / receiptELK layoutMeasured node and label boxesHost projectSource acquisition and explicit writesStatic rendering facts only · source-bound Questions · no C/Q/R or model publication \ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.137-functional-render-composition.d2 b/docs/90-99-views/90-architecture-views/90.137-functional-render-composition.d2 new file mode 100644 index 0000000..a81ba6e --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.137-functional-render-composition.d2 @@ -0,0 +1,128 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + +# Component dependencies, not execution order. +vars: {d2-config: {data: {figure: |json +{ + "title": "Functional rendering: independent owners and replaceable resources", + "purpose": "architecture", + "kind": "render-composition", + "language": "en", + "width": 1440, + "primary": "boundaries", + "questions": [ + { + "ref": "boundaries", + "text": "What can a downstream project compose without replacing model or layout semantics?", + "focusRefs": [ + "source", + "theme", + "heading", + "measurement", + "export" + ] + } + ], + "references": { + "source": "docs/90-99-views/90-architecture-views/90.137-functional-render-composition.d2", + "theme": "packages/render/src/presentation-theme.ts", + "heading": "packages/render/src/heading.ts", + "measurement": "packages/render/src/scene-export.ts", + "export": "packages/render/src/export.ts" + }, + "basis": { + "captureRef": "design-candidate:functional-render", + "modelRefs": [], + "obligationRefs": [ + "docs/10-19-design/10-architecture/10.144-functional-themes-layouts-and-package-examples.org" + ], + "evidenceRefs": [] + }, + "copy": { + "description": "Architecture dependencies; arrows point to the capability consumed.", + "status": "Static rendering facts only \u00b7 source-bound Questions \u00b7 no C/Q/R or model publication" + }, + "themes": [ + "sketchbook", + "compact" + ], + "icons": [ + "engineering" + ], + "presentation": { + "scenes": [ + { + "graph": { + "id": "functional-composition", + "children": [ + { + "id": "model" + }, + { + "id": "composition" + }, + { + "id": "themes" + }, + { + "id": "icons" + }, + { + "id": "export" + }, + { + "id": "layout" + }, + { + "id": "host" + } + ] + }, + "icons": { + "model": "model", + "composition": "selection", + "themes": "library", + "icons": "reference", + "export": "document", + "layout": "model", + "host": "capture" + }, + "roles": { + "themes": "publication", + "icons": "selection", + "host": "capture", + "model": "external", + "layout": "external" + } + } + ] + }, + "variants": [ + { + "name": "sketchbook", + "themes": [ + "sketchbook", + "ember", + "compact", + "layered-down" + ] + } + ] +} +| +}}} +model: "Model adapters\nOfficial D2 / OpenSysML observations" +composition: "Pure composition\ncomposeFigure / composeHeading / composeDiagram" +themes: "Visual resources\nStyle + palette + type + density + role markers" +icons: "SVG assets\nReplaceable domain icons and surfaces" +export: "Browser export effect\nFonts / actual bounds / SVG / PNG / receipt" +layout: "ELK layout\nMeasured node and label boxes" +host: "Host project\nSource acquisition and explicit writes" +composition -> model: reads captured model +composition -> themes: selects visual layers +composition -> icons: selects assets +export -> composition: consumes composed HTML +export -> layout: delegates geometry +host -> model: captures inputs +host -> export: requests image export diff --git a/docs/90-99-views/90-architecture-views/90.137-functional-render-composition.json b/docs/90-99-views/90-architecture-views/90.137-functional-render-composition.json new file mode 100644 index 0000000..4edb19a --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.137-functional-render-composition.json @@ -0,0 +1,179 @@ +{ + "attribution": { + "copyright": [ + "2026 hardenedlinux Linux Team and Contributors", + "2014 Indian Type Foundry (info@indiantypefoundry.com)" + ], + "license": "LGPL-2.1-or-later AND OFL-1.1" + }, + "observation": { + "canvas": { + "x": 0, + "y": 0, + "width": 1440, + "height": 907 + }, + "subjects": [ + { + "id": "model", + "role": "external", + "x": 244.82435607910156, + "y": 732.1906127929688, + "width": 289.30157470703125, + "height": 85.85986328125 + }, + { + "id": "composition", + "role": "default", + "x": 770.25, + "y": 548.580078125, + "width": 372.8350830078125, + "height": 85.3902587890625 + }, + { + "id": "themes", + "role": "publication", + "x": 873.9620361328125, + "y": 732.7611694335938, + "width": 348.5826416015625, + "height": 83.838623046875 + }, + { + "id": "icons", + "role": "selection", + "x": 557.4692993164062, + "y": 732.423583984375, + "width": 293.03070068359375, + "height": 84.1339111328125 + }, + { + "id": "export", + "role": "default", + "x": 735.75, + "y": 364.6357727050781, + "width": 330.4544677734375, + "height": 84.096435546875 + }, + { + "id": "layout", + "role": "external", + "x": 497.8075866699219, + "y": 548.3423461914062, + "width": 248.44241333007812, + "height": 84.18035888671875 + }, + { + "id": "host", + "role": "capture", + "x": 713.4146728515625, + "y": 180.28384399414062, + "width": 281.322021484375, + "height": 84.17276000976562 + } + ], + "relations": [ + "(composition -> model)[0]", + "(composition -> themes)[0]", + "(composition -> icons)[0]", + "(export -> composition)[0]", + "(export -> layout)[0]", + "(host -> model)[0]", + "(host -> export)[0]" + ], + "headings": [ + { + "role": "title", + "x": 20, + "y": 20, + "width": 1400, + "height": 48 + }, + { + "role": "question", + "x": 20, + "y": 68, + "width": 1400, + "height": 34 + }, + { + "role": "note", + "x": 20, + "y": 102, + "width": 1400, + "height": 27 + }, + { + "role": "note", + "x": 20, + "y": 860, + "width": 1400, + "height": 27 + } + ] + }, + "canvas": { + "background": "rgb(250, 247, 238)", + "transparent": false + }, + "readability": { + "minimumTextSize": 12, + "samples": 26 + }, + "inputSHA256": "fbec4270b9af955d0dd0306a2b5600e21a60c568e8fb90cbc3eeaf493f0c7568", + "scenes": [ + { + "inputSHA256": "0da9cdbf8969d8190c5a555ba58d3c733f14452e07d3b7fb42e16a3d02db4bad", + "layoutSHA256": "7b8725fc4b58e91d3d4a77ff6b45eb20f8e1c4cd38c66060c56d2fef68448aff", + "nodes": 7, + "edges": 7, + "milliseconds": 213.0622080000012 + } + ], + "svgSHA256": [ + "50d7d1da0f80eb6581f5e27fcefb35b8e4541fc5b9de4ba27d3fcc6f9dd72e86", + "aeb91e39bd4f456f0ed3b54c2858932ce0a5c7adddb741d2ca9040c6630d4dbf" + ], + "composedHTMLSHA256": "d7c0fef0014f05a7b130963bb15eac2cbc359067c9f683a0d254190a7adeb645", + "dependencies": { + "@fontsource/inter": "5.3.0", + "@fontsource/kalam": "5.3.0", + "@terrastruct/d2": "0.1.33", + "@xyflow/system": "0.0.83", + "elkjs": "0.12.1", + "parse5": "8.0.1", + "roughjs": "4.6.6", + "valibot": "1.2.0", + "web-worker": "1.5.0" + }, + "regionSHA256": {}, + "htmlSHA256": "1c46b2ea7b9352f517de0eda35363391fddc9e07d6e3f9e06fd43803307b8369", + "drawing": "roughjs@4.6.6", + "routing": "elkjs@0.12.1", + "assetSHA256": { + "@fontsource/kalam/files/kalam-latin-400-normal.woff2": "954410601a823f37e219f7930b7446f86afa15621326a7078d56fb9c910135cb", + "@fontsource/kalam/files/kalam-latin-700-normal.woff2": "252063af6ade8b9a744cde4ddad0fc21ea53b8ba711eed121a0c2e8610ea9c93" + }, + "pngSHA256": "3b4c2feff0faef567b0d3e6d74331ae017aa302e555b4312307ecb3f21888191", + "browser": "156.0.8078.4", + "width": 2160, + "height": 1361, + "scale": 1.5, + "bounds": { + "architecture": { + "x": 20, + "y": 20, + "width": 1400, + "height": 867 + } + }, + "sources": { + "docs/90-99-views/90-architecture-views/90.137-functional-render-composition.d2": "4d830b597886ffb1d45eb637f3b7ebe9b476f299b6258cae85c7f93613eef264", + "packages/render/examples/attribution.ts": "58f7914284a69c4ce42db61ec24c06cf9194232ed3402fc7ae12e3ded4187892", + "packages/render/examples/overview-composition.ts": "d0a4ff5da59577b7dcb6b952e4f7ad3424f23f226e4af8f15c223ed53efcec93", + "packages/render/examples/overviews.ts": "e385215fc31d9d2945c06d7df9f66f700e7e980f71154c99225c2db03e4e093f", + "packages/render/src/export.ts": "791963ea500bb6c08af8def6605b1366b5afc887796862f01b3ee76465dbfab2", + "packages/render/src/heading.ts": "3057aaf327fd7c76dee43f46b0e5bb7a2f0bd1b36bc15a3490224be41566de17", + "packages/render/src/presentation-theme.ts": "50873ceac1662bafdc8ca0993be1745f4679c01c73c5f00469d4493c025f0888", + "packages/render/src/scene-export.ts": "f5ba1250e1fe5e6c952ada3bc501979e4f9b8a8a0506a62a6e4cebdaf256a217" + } +} \ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.137-functional-render-composition.json.license b/docs/90-99-views/90-architecture-views/90.137-functional-render-composition.json.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.137-functional-render-composition.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.137-functional-render-composition.png b/docs/90-99-views/90-architecture-views/90.137-functional-render-composition.png new file mode 100644 index 0000000..6761a24 Binary files /dev/null and b/docs/90-99-views/90-architecture-views/90.137-functional-render-composition.png differ diff --git a/docs/90-99-views/90-architecture-views/90.137-functional-render-composition.png.license b/docs/90-99-views/90-architecture-views/90.137-functional-render-composition.png.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.137-functional-render-composition.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.137-functional-render-composition.svg b/docs/90-99-views/90-architecture-views/90.137-functional-render-composition.svg new file mode 100644 index 0000000..154aad5 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.137-functional-render-composition.svg @@ -0,0 +1,41 @@ + +{"renderer":{"package":"@deterministic-engineering/render","version":"1.0.0","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":{"scenes":[{"graph":{"id":"functional-composition","children":[{"id":"model"},{"id":"composition"},{"id":"themes"},{"id":"icons"},{"id":"export"},{"id":"layout"},{"id":"host"}]},"icons":{"model":"model","composition":"selection","themes":"library","icons":"reference","export":"document","layout":"model","host":"capture"},"roles":{"themes":"publication","icons":"selection","host":"capture","model":"external","layout":"external"}}]},"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":"fbec4270b9af955d0dd0306a2b5600e21a60c568e8fb90cbc3eeaf493f0c7568","model":{"subjects":[{"id":"model","type":"rectangle","level":1,"label":"Model adapters\nOfficial D2 / OpenSysML observations"},{"id":"composition","type":"rectangle","level":1,"label":"Pure composition\ncomposeFigure / composeHeading / composeDiagram"},{"id":"themes","type":"rectangle","level":1,"label":"Visual resources\nStyle + palette + type + density + role markers"},{"id":"icons","type":"rectangle","level":1,"label":"SVG assets\nReplaceable domain icons and surfaces"},{"id":"export","type":"rectangle","level":1,"label":"Browser export effect\nFonts / actual bounds / SVG / PNG / receipt"},{"id":"layout","type":"rectangle","level":1,"label":"ELK layout\nMeasured node and label boxes"},{"id":"host","type":"rectangle","level":1,"label":"Host project\nSource acquisition and explicit writes"}],"relations":[{"id":"(composition -> model)[0]","src":"composition","dst":"model","label":"reads captured model","srcArrow":"none","dstArrow":"triangle"},{"id":"(composition -> themes)[0]","src":"composition","dst":"themes","label":"selects visual layers","srcArrow":"none","dstArrow":"triangle"},{"id":"(composition -> icons)[0]","src":"composition","dst":"icons","label":"selects assets","srcArrow":"none","dstArrow":"triangle"},{"id":"(export -> composition)[0]","src":"export","dst":"composition","label":"consumes composed HTML","srcArrow":"none","dstArrow":"triangle"},{"id":"(export -> layout)[0]","src":"export","dst":"layout","label":"delegates geometry","srcArrow":"none","dstArrow":"triangle"},{"id":"(host -> model)[0]","src":"host","dst":"model","label":"captures inputs","srcArrow":"none","dstArrow":"triangle"},{"id":"(host -> export)[0]","src":"host","dst":"export","label":"requests image export","srcArrow":"none","dstArrow":"triangle"}]},"view":{"source":"docs/90-99-views/90-architecture-views/90.137-functional-render-composition.d2","title":"Functional rendering: independent owners and replaceable resources","purpose":"architecture","kind":"render-composition","question":{"ref":"boundaries","text":"What can a downstream project compose without replacing model or layout semantics?","focusRefs":["source","theme","heading","measurement","export"]},"basis":{"captureRef":"design-candidate:functional-render","modelRefs":[],"obligationRefs":["docs/10-19-design/10-architecture/10.144-functional-themes-layouts-and-package-examples.org"],"evidenceRefs":[]}},"questions":[{"ref":"boundaries","text":"What can a downstream project compose without replacing model or layout semantics?","focusRefs":["source","theme","heading","measurement","export"]}],"references":{"export":"packages/render/src/export.ts","heading":"packages/render/src/heading.ts","measurement":"packages/render/src/scene-export.ts","source":"docs/90-99-views/90-architecture-views/90.137-functional-render-composition.d2","theme":"packages/render/src/presentation-theme.ts"},"sourceSHA256":{"docs/90-99-views/90-architecture-views/90.137-functional-render-composition.d2":"4d830b597886ffb1d45eb637f3b7ebe9b476f299b6258cae85c7f93613eef264","packages/render/examples/attribution.ts":"58f7914284a69c4ce42db61ec24c06cf9194232ed3402fc7ae12e3ded4187892","packages/render/examples/overview-composition.ts":"d0a4ff5da59577b7dcb6b952e4f7ad3424f23f226e4af8f15c223ed53efcec93","packages/render/examples/overviews.ts":"e385215fc31d9d2945c06d7df9f66f700e7e980f71154c99225c2db03e4e093f","packages/render/src/export.ts":"791963ea500bb6c08af8def6605b1366b5afc887796862f01b3ee76465dbfab2","packages/render/src/heading.ts":"3057aaf327fd7c76dee43f46b0e5bb7a2f0bd1b36bc15a3490224be41566de17","packages/render/src/presentation-theme.ts":"50873ceac1662bafdc8ca0993be1745f4679c01c73c5f00469d4493c025f0888","packages/render/src/scene-export.ts":"f5ba1250e1fe5e6c952ada3bc501979e4f9b8a8a0506a62a6e4cebdaf256a217"},"rendered":{"observation":{"canvas":{"x":0,"y":0,"width":1440,"height":907},"subjects":[{"id":"model","role":"external","x":244.82435607910156,"y":732.1906127929688,"width":289.30157470703125,"height":85.85986328125},{"id":"composition","role":"default","x":770.25,"y":548.580078125,"width":372.8350830078125,"height":85.3902587890625},{"id":"themes","role":"publication","x":873.9620361328125,"y":732.7611694335938,"width":348.5826416015625,"height":83.838623046875},{"id":"icons","role":"selection","x":557.4692993164062,"y":732.423583984375,"width":293.03070068359375,"height":84.1339111328125},{"id":"export","role":"default","x":735.75,"y":364.6357727050781,"width":330.4544677734375,"height":84.096435546875},{"id":"layout","role":"external","x":497.8075866699219,"y":548.3423461914062,"width":248.44241333007812,"height":84.18035888671875},{"id":"host","role":"capture","x":713.4146728515625,"y":180.28384399414062,"width":281.322021484375,"height":84.17276000976562}],"relations":["(composition -> model)[0]","(composition -> themes)[0]","(composition -> icons)[0]","(export -> composition)[0]","(export -> layout)[0]","(host -> model)[0]","(host -> export)[0]"],"headings":[{"role":"title","x":20,"y":20,"width":1400,"height":48},{"role":"question","x":20,"y":68,"width":1400,"height":34},{"role":"note","x":20,"y":102,"width":1400,"height":27},{"role":"note","x":20,"y":860,"width":1400,"height":27}]},"readability":{"minimumTextSize":12,"samples":26},"bounds":{"architecture":{"x":20,"y":20,"width":1400,"height":867}}}}Functional rendering: independent owners and replaceable resources?What can a downstream project compose without replacing model or layout semantics?Architecture dependencies; arrows point to the capability consumed.{"graph":{"id":"functional-composition","children":[{"id":"model"},{"id":"composition"},{"id":"themes"},{"id":"icons"},{"id":"export"},{"id":"layout"},{"id":"host"}],"layoutOptions":{"elk.spacing.nodeNode":"24","elk.layered.spacing.nodeNodeBetweenLayers":"36"},"edges":[{"id":"(composition -> model)[0]","sources":["composition"],"targets":["model"]},{"id":"(composition -> themes)[0]","sources":["composition"],"targets":["themes"]},{"id":"(composition -> icons)[0]","sources":["composition"],"targets":["icons"]},{"id":"(export -> composition)[0]","sources":["export"],"targets":["composition"]},{"id":"(export -> layout)[0]","sources":["export"],"targets":["layout"]},{"id":"(host -> model)[0]","sources":["host"],"targets":["model"]},{"id":"(host -> export)[0]","sources":["host"],"targets":["export"]}]},"marker":"arrow-39efee39ff2c"}reads captured modelselects visual layersselects assetsconsumes composed HTMLdelegates geometrycaptures inputsrequests image exportModel adaptersOfficial D2 / OpenSysML observationsPure compositioncomposeFigure / composeHeading / composeDiagramVisual resourcesStyle + palette + type + density + role markersSVG assetsReplaceable domain icons and surfacesBrowser export effectFonts / actual bounds / SVG / PNG / receiptELK layoutMeasured node and label boxesHost projectSource acquisition and explicit writesStatic rendering facts only · source-bound Questions · no C/Q/R or model publication \ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-adopter.html b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-adopter.html new file mode 100644 index 0000000..f19ff9d --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-adopter.html @@ -0,0 +1,75 @@ + + +Library / Profile / Scenario: Question-driven design
Library / Profile / Scenario: Question-driven design?Who owns the reusable definitions?
{"graph":{"id":"ownership","children":[{"id":"library"},{"id":"project","children":[{"id":"project.profile"},{"id":"project.scenario"},{"id":"project.inputs"}]}],"layoutOptions":{"elk.spacing.nodeNode":"24","elk.layered.spacing.nodeNodeBetweenLayers":"36","elk.direction":"UP"},"edges":[{"id":"(project.profile -> library)[0]","sources":["project.profile"],"targets":["library"]},{"id":"project.(scenario -> profile)[0]","sources":["project.scenario"],"targets":["project.profile"]},{"id":"(project.scenario -> library)[0]","sources":["project.scenario"],"targets":["library"]},{"id":"project.(scenario -> inputs)[0]","sources":["project.scenario"],"targets":["project.inputs"]}]},"marker":"arrow-c322333a681a"}Projectselectsbindsreferences definitionsbinds actual inputsLibraryDefinitions and contractsProfileSelects published definitionsScenarioBinds project inputsRepository inputsModels / Org / decisions
Library adopter1 subjects are explicitly linked to the selected Questions.Retain 5 displayed subjects, including required references and their declared containers.Focal subjects have 2 incoming and 0 outgoing relationships; select ELK UP.Selected focal and source-gap roles use the chosen theme; no evidence state is promoted to approval.Selected source observations: unobservedCurrent repository source observations only · no C/Q/R issued
\ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-adopter.json b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-adopter.json new file mode 100644 index 0000000..e89013e --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-adopter.json @@ -0,0 +1,514 @@ +{ + "sources": { + "docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture.d2": "865851b9efa36c9ddadd9d4e5284b4214564d6f57e3e6e85930709a92f7a96fc", + "docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices.d2": "394c73914d695c9990f1f3fa85d2a2964c6838c7380f0cc6f0d60b912eb03481", + "library/project-organization/objects.ss": "f660d3d90a55a9d7deff8782194dbdc952e85ecfd52463577e8ab1be9905a6b6", + "packages/render/examples/attribution.ts": "58f7914284a69c4ce42db61ec24c06cf9194232ed3402fc7ae12e3ded4187892", + "packages/render/examples/design-case.ts": "70c1e9886e11e867023ac72db3bc0c7e0c62bf3ea3d52db334a9251d63a108ea", + "packages/render/examples/design-choices.ts": "c549f116af5faded85ae887590bfd123cc5db298302cab0c0f8ad12c45680536", + "packages/render/package.json": "cdb4f5d8639d7fdd389973db286612d5db57b42c873fdc3a2316dd1ac9f0c371", + "packages/render/src/design.ts": "5cf15ef5faa1b968800e1c08822e473b2d2fd1f86c921aad9d2e1f9a75f4fc1a", + "packages/render/src/diagram.ts": "c0e831979970fc90c418820e4462d2097492811f10c7619dab1469b31194a32b", + "packages/render/src/export.ts": "791963ea500bb6c08af8def6605b1366b5afc887796862f01b3ee76465dbfab2", + "packages/render/src/figure.ts": "4f994cc394859027e4986635bffc1b45144a01140e19a1ce6b7b5748fa58bbd7", + "packages/render/src/model-view.ts": "8a2c575c8c1a2f09770fb4cfdbe6718121a66c4fe8b32c97f7b2d88c9f7a57fc", + "packages/render/src/scene-export.ts": "f5ba1250e1fe5e6c952ada3bc501979e4f9b8a8a0506a62a6e4cebdaf256a217", + "packages/render/src/taste-policies.ts": "9a6b5519ea51c8560b6fa33e6582cdc99ac3b6a19e69387fbb8e2a284d2058d9", + "packages/render/src/taste-selection.ts": "0d1d9477176d8da9f15c4f33bc8dc9d057384abd0d9cd13862f48e410fe2e897", + "packages/render/src/taste.ts": "4ae78ea584e10525d66dd6df685205a3bd6d7e635da531475e84a95262067893", + "profiles/library-formation.ss": "5b124cfda09b5d2d950481ae8f1e6143a135f7f1c0ce0328fd3de5407e732c1f", + "project.sysml": "a1df4b8bd19d07011e1bf7d54b46ef855c66029ac543424743c7e388146bd9b1", + "scenarios/project-formation/func.ss": "b3943c92bf48daac75b456e5a994aedba099226ba6aa232e937dae57e53e1350" + }, + "receipt": { + "attribution": { + "copyright": [ + "2026 hardenedlinux Linux Team and Contributors", + "2014 Indian Type Foundry (info@indiantypefoundry.com)" + ], + "license": "LGPL-2.1-or-later AND OFL-1.1" + }, + "observation": { + "canvas": { + "x": 0, + "y": 0, + "width": 1200, + "height": 932 + }, + "subjects": [ + { + "id": "project", + "role": "default", + "x": 325.8243408203125, + "y": 322.19061279296875, + "width": 550.8900756835938, + "height": 341.99114990234375 + }, + { + "id": "library", + "role": "focal", + "x": 438, + "y": 131.58004760742188, + "width": 215.15960693359375, + "height": 86.89974975585938 + }, + { + "id": "project.profile", + "role": "default", + "owner": "project", + "x": 392.9620361328125, + "y": 402, + "width": 229.5379638671875, + "height": 83.45523071289062 + }, + { + "id": "project.scenario", + "role": "default", + "owner": "project", + "x": 462.71929931640625, + "y": 563.423583984375, + "width": 181.41455078125, + "height": 84.1339111328125 + }, + { + "id": "project.inputs", + "role": "default", + "owner": "project", + "x": 642.5, + "y": 401.65966796875, + "width": 208.4544677734375, + "height": 84.07254028320312 + } + ], + "relations": [ + "(project.profile -> library)[0]", + "project.(scenario -> profile)[0]", + "(project.scenario -> library)[0]", + "project.(scenario -> inputs)[0]" + ], + "headings": [ + { + "role": "title", + "x": 20, + "y": 20, + "width": 1160, + "height": 48 + }, + { + "role": "question", + "x": 20, + "y": 68, + "width": 1160, + "height": 34 + }, + { + "role": "answer", + "x": 20, + "y": 695, + "width": 1160, + "height": 31 + }, + { + "role": "note", + "x": 20, + "y": 730, + "width": 1160, + "height": 27 + }, + { + "role": "note", + "x": 20, + "y": 761, + "width": 1160, + "height": 27 + }, + { + "role": "note", + "x": 20, + "y": 792, + "width": 1160, + "height": 27 + }, + { + "role": "note", + "x": 20, + "y": 823, + "width": 1160, + "height": 27 + }, + { + "role": "note", + "x": 20, + "y": 854, + "width": 1160, + "height": 27 + }, + { + "role": "note", + "x": 20, + "y": 885, + "width": 1160, + "height": 27 + } + ] + }, + "canvas": { + "background": "rgb(250, 247, 238)", + "transparent": false + }, + "readability": { + "minimumTextSize": 12, + "samples": 23 + }, + "inputSHA256": "63be78f1745618eef5d201f28a0d080c369f78f91fd7429496d0d5fdd5562297", + "scenes": [ + { + "inputSHA256": "26098da9540049e5ec5d007ed72ad5b38ebb5ca7e6ef69e1c91a4d2dd6ec65cd", + "layoutSHA256": "db4b337396836bfbce2a91a4c60559126bf81b5ea809fd301c8b3cdf657badc4", + "nodes": 5, + "edges": 4, + "milliseconds": 226.82683300000008 + } + ], + "svgSHA256": [ + "e46b4105366d67ad8e66c171ae4930f2363cbb04befd7635059ebb355fc654d7", + "d2fe1e23d99770726d5bdfa8627c2e380c79839382ccb9880525d0dc34dc761e" + ], + "composedHTMLSHA256": "76f803fcd92fdc1da5202990fe5b433cb134e9185400bb4b40b7e466ba7735b3", + "dependencies": { + "@fontsource/inter": "5.3.0", + "@fontsource/kalam": "5.3.0", + "@terrastruct/d2": "0.1.33", + "@xyflow/system": "0.0.83", + "elkjs": "0.12.1", + "parse5": "8.0.1", + "roughjs": "4.6.6", + "valibot": "1.2.0", + "web-worker": "1.5.0" + }, + "regionSHA256": {}, + "htmlSHA256": "f1d74ee80f471df39ce28117b4cfbb1fc29a96ae5ee4f7d2498997cda4866f0a", + "drawing": "roughjs@4.6.6", + "routing": "elkjs@0.12.1", + "assetSHA256": { + "@fontsource/kalam/files/kalam-latin-400-normal.woff2": "954410601a823f37e219f7930b7446f86afa15621326a7078d56fb9c910135cb", + "@fontsource/kalam/files/kalam-latin-700-normal.woff2": "252063af6ade8b9a744cde4ddad0fc21ea53b8ba711eed121a0c2e8610ea9c93" + }, + "pngSHA256": "9ac66a732fc3c7de88a07d0dab2586552fa035dee6b60dfa522e1f85e6e5a3bb", + "browser": "156.0.8078.4", + "width": 1800, + "height": 1398, + "scale": 1.5, + "bounds": { + "model": { + "x": 20, + "y": 110, + "width": 1160, + "height": 571 + } + } + }, + "taste": { + "inputSHA256": "63be78f1745618eef5d201f28a0d080c369f78f91fd7429496d0d5fdd5562297", + "htmlSHA256": "f1d74ee80f471df39ce28117b4cfbb1fc29a96ae5ee4f7d2498997cda4866f0a", + "pngSHA256": "9ac66a732fc3c7de88a07d0dab2586552fa035dee6b60dfa522e1f85e6e5a3bb", + "design": { + "audience": "Library adopter", + "medium": "README component view", + "message": "Library publishes; Profile selects; Scenario binds actual inputs.", + "questionRefs": [ + "publication" + ], + "requiredSubjects": [ + "library", + "project", + "project.profile", + "project.scenario", + "project.inputs" + ], + "requiredRelations": [ + "(project.profile -> library)[0]", + "project.(scenario -> profile)[0]", + "(project.scenario -> library)[0]", + "project.(scenario -> inputs)[0]" + ], + "focalSubjects": [ + "library" + ] + }, + "sourceSHA256": { + "docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture.d2": "865851b9efa36c9ddadd9d4e5284b4214564d6f57e3e6e85930709a92f7a96fc", + "docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices.d2": "394c73914d695c9990f1f3fa85d2a2964c6838c7380f0cc6f0d60b912eb03481", + "library/project-organization/objects.ss": "f660d3d90a55a9d7deff8782194dbdc952e85ecfd52463577e8ab1be9905a6b6", + "packages/render/examples/attribution.ts": "58f7914284a69c4ce42db61ec24c06cf9194232ed3402fc7ae12e3ded4187892", + "packages/render/examples/design-case.ts": "70c1e9886e11e867023ac72db3bc0c7e0c62bf3ea3d52db334a9251d63a108ea", + "packages/render/examples/design-choices.ts": "c549f116af5faded85ae887590bfd123cc5db298302cab0c0f8ad12c45680536", + "packages/render/package.json": "cdb4f5d8639d7fdd389973db286612d5db57b42c873fdc3a2316dd1ac9f0c371", + "packages/render/src/design.ts": "5cf15ef5faa1b968800e1c08822e473b2d2fd1f86c921aad9d2e1f9a75f4fc1a", + "packages/render/src/diagram.ts": "c0e831979970fc90c418820e4462d2097492811f10c7619dab1469b31194a32b", + "packages/render/src/export.ts": "791963ea500bb6c08af8def6605b1366b5afc887796862f01b3ee76465dbfab2", + "packages/render/src/figure.ts": "4f994cc394859027e4986635bffc1b45144a01140e19a1ce6b7b5748fa58bbd7", + "packages/render/src/model-view.ts": "8a2c575c8c1a2f09770fb4cfdbe6718121a66c4fe8b32c97f7b2d88c9f7a57fc", + "packages/render/src/scene-export.ts": "f5ba1250e1fe5e6c952ada3bc501979e4f9b8a8a0506a62a6e4cebdaf256a217", + "packages/render/src/taste-policies.ts": "9a6b5519ea51c8560b6fa33e6582cdc99ac3b6a19e69387fbb8e2a284d2058d9", + "packages/render/src/taste-selection.ts": "0d1d9477176d8da9f15c4f33bc8dc9d057384abd0d9cd13862f48e410fe2e897", + "packages/render/src/taste.ts": "4ae78ea584e10525d66dd6df685205a3bd6d7e635da531475e84a95262067893", + "profiles/library-formation.ss": "5b124cfda09b5d2d950481ae8f1e6143a135f7f1c0ce0328fd3de5407e732c1f", + "project.sysml": "a1df4b8bd19d07011e1bf7d54b46ef855c66029ac543424743c7e388146bd9b1", + "scenarios/project-formation/func.ss": "b3943c92bf48daac75b456e5a994aedba099226ba6aa232e937dae57e53e1350" + }, + "selection": { + "bindingSHA256": "1108c3fce3d9fcc6e440d90ce70ef79a1ada50c43409b28decf927bf629186d1", + "decisions": [ + { + "rationale": "1 subjects are explicitly linked to the selected Questions.", + "questionRefs": [ + "publication" + ], + "subjectRefs": [ + "library" + ], + "evidenceRefs": [], + "changes": { + "design": { + "audience": "Library adopter", + "medium": "README component view", + "message": "Library publishes; Profile selects; Scenario binds actual inputs.", + "questionRefs": [ + "publication" + ], + "requiredSubjects": [ + "library", + "project", + "project.profile", + "project.scenario", + "project.inputs" + ], + "requiredRelations": [ + "(project.profile -> library)[0]", + "project.(scenario -> profile)[0]", + "(project.scenario -> library)[0]", + "project.(scenario -> inputs)[0]" + ], + "focalSubjects": [ + "library" + ] + } + }, + "rule": "question-focus" + }, + { + "rationale": "Retain 5 displayed subjects, including required references and their declared containers.", + "questionRefs": [ + "publication" + ], + "subjectRefs": [ + "library", + "project", + "project.profile", + "project.scenario", + "project.inputs" + ], + "evidenceRefs": [], + "changes": { + "presentation": { + "graph": { + "id": "ownership", + "children": [ + { + "id": "library" + }, + { + "id": "project", + "children": [ + { + "id": "project.profile" + }, + { + "id": "project.scenario" + }, + { + "id": "project.inputs" + } + ] + } + ], + "layoutOptions": {} + }, + "roles": {}, + "icons": { + "library": "library", + "project.profile": "selection", + "project.scenario": "capture", + "project.inputs": "document" + }, + "edgeLabels": true + } + }, + "rule": "question-scope" + }, + { + "rationale": "Focal subjects have 2 incoming and 0 outgoing relationships; select ELK UP.", + "questionRefs": [ + "publication" + ], + "subjectRefs": [ + "library" + ], + "evidenceRefs": [], + "changes": { + "presentation": { + "graph": { + "id": "ownership", + "children": [ + { + "id": "library" + }, + { + "id": "project", + "children": [ + { + "id": "project.profile" + }, + { + "id": "project.scenario" + }, + { + "id": "project.inputs" + } + ] + } + ], + "layoutOptions": { + "elk.direction": "UP" + } + }, + "roles": {}, + "icons": { + "library": "library", + "project.profile": "selection", + "project.scenario": "capture", + "project.inputs": "document" + }, + "edgeLabels": true + } + }, + "rule": "dependency-layout" + }, + { + "rationale": "Selected focal and source-gap roles use the chosen theme; no evidence state is promoted to approval.", + "questionRefs": [ + "publication" + ], + "subjectRefs": [ + "library" + ], + "evidenceRefs": [], + "changes": { + "presentation": { + "graph": { + "id": "ownership", + "children": [ + { + "id": "library" + }, + { + "id": "project", + "children": [ + { + "id": "project.profile" + }, + { + "id": "project.scenario" + }, + { + "id": "project.inputs" + } + ] + } + ], + "layoutOptions": { + "elk.direction": "UP" + } + }, + "roles": { + "library": "focal" + }, + "icons": { + "library": "library", + "project.profile": "selection", + "project.scenario": "capture", + "project.inputs": "document" + }, + "edgeLabels": true + } + }, + "rule": "visual-hierarchy" + } + ] + }, + "judgments": [ + { + "rule": "question-focus", + "rationale": "Choose emphasis from selected Question/model bindings.", + "notes": [] + }, + { + "rule": "evidence-focus", + "rationale": "Expose selected counterevidence, conflict, stale or missing source observations.", + "notes": [] + }, + { + "rule": "question-scope", + "rationale": "Choose the view scope from Questions while preserving all required references.", + "notes": [] + }, + { + "rule": "dependency-layout", + "rationale": "Orient the selected relationship view around its focal dependency position.", + "notes": [] + }, + { + "rule": "visual-hierarchy", + "rationale": "Give focal subjects and selected source gaps distinct visual roles.", + "notes": [] + }, + { + "rule": "minimum-text-size", + "rationale": "Read SVG text at the selected logical display size.", + "parameters": { + "minimum": 12 + }, + "notes": [ + { + "kind": "observation", + "message": "Observed minimum 12.00 CSS px; selected preference 12 CSS px.", + "questionRefs": [ + "publication" + ], + "subjectRefs": [] + } + ] + }, + { + "rule": "focal-budget", + "rationale": "Reserve emphasis for the selected reader question.", + "parameters": { + "maximum": 2 + }, + "notes": [ + { + "kind": "observation", + "message": "1 declared focal subjects; selected preference at most 2.", + "questionRefs": [ + "publication" + ], + "subjectRefs": [ + "library" + ] + } + ] + } + ] + } +} \ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-adopter.json.license b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-adopter.json.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-adopter.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-adopter.png b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-adopter.png new file mode 100644 index 0000000..bec62ed Binary files /dev/null and b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-adopter.png differ diff --git a/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-adopter.png.license b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-adopter.png.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-adopter.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-adopter.svg b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-adopter.svg new file mode 100644 index 0000000..7b6927b --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-adopter.svg @@ -0,0 +1,75 @@ + +{"renderer":{"package":"@deterministic-engineering/render","version":"1.0.0","icons":{"capture":"a647d42aa11f4e5e85d0bbf66f483f57f3c4ba3a9536362ed0eaaaae10a89cee","decision":"3535642a5b613372c3fd374151ec90aafa19b64b2d33d10b19162cad07a35c7a","document":"0bf9674a401262da8a646305cab00006954721c07765b9962e0dee1c31d560f7","evidence":"0a91b169aaa644829a054cbb94194efffaf4298f2b6f8fa8c6ec2b7b413a1766","library":"df474fa36a74016b79236fff58a980a8c18c682d1866211776e349a0eb4b2979","model":"0cfd1f9ed3873f556ace725a7b6a251ebe75d7d976567699276f34df36b2443b","obligation":"e76f4d34a7190400446c89e4e7d187762b885808a64a00c99455599d902570c5","pending":"cca7589bc3b1dcdebacb867c6836c6fc166257f05823555a268354ff9bfac00c","question":"dbf231e1568dc37189d5674d73c4bfc58a17eb8ada579b3f03bf2813d33c56f4","reference":"3814c570f79ab294252c36530de464c9364814b797afb862d9c62e728a8660fc","selection":"82b4ab6faf195fea0a891c35268e61c186e93e7c6a9d7967a4f6a73dbf25ae7f"}},"design":{"audience":"Library adopter","medium":"README component view","message":"Library publishes; Profile selects; Scenario binds actual inputs.","questionRefs":["publication"],"requiredSubjects":["library","project","project.profile","project.scenario","project.inputs"],"requiredRelations":["(project.profile -> library)[0]","project.(scenario -> profile)[0]","(project.scenario -> library)[0]","project.(scenario -> inputs)[0]"],"focalSubjects":["library"]},"evidence":[],"taste":{"bindingSHA256":"1108c3fce3d9fcc6e440d90ce70ef79a1ada50c43409b28decf927bf629186d1","decisions":[{"rationale":"1 subjects are explicitly linked to the selected Questions.","questionRefs":["publication"],"subjectRefs":["library"],"evidenceRefs":[],"changes":{"design":{"audience":"Library adopter","medium":"README component view","message":"Library publishes; Profile selects; Scenario binds actual inputs.","questionRefs":["publication"],"requiredSubjects":["library","project","project.profile","project.scenario","project.inputs"],"requiredRelations":["(project.profile -> library)[0]","project.(scenario -> profile)[0]","(project.scenario -> library)[0]","project.(scenario -> inputs)[0]"],"focalSubjects":["library"]}},"rule":"question-focus"},{"rationale":"Retain 5 displayed subjects, including required references and their declared containers.","questionRefs":["publication"],"subjectRefs":["library","project","project.profile","project.scenario","project.inputs"],"evidenceRefs":[],"changes":{"presentation":{"graph":{"id":"ownership","children":[{"id":"library"},{"id":"project","children":[{"id":"project.profile"},{"id":"project.scenario"},{"id":"project.inputs"}]}],"layoutOptions":{}},"roles":{},"icons":{"library":"library","project.profile":"selection","project.scenario":"capture","project.inputs":"document"},"edgeLabels":true}},"rule":"question-scope"},{"rationale":"Focal subjects have 2 incoming and 0 outgoing relationships; select ELK UP.","questionRefs":["publication"],"subjectRefs":["library"],"evidenceRefs":[],"changes":{"presentation":{"graph":{"id":"ownership","children":[{"id":"library"},{"id":"project","children":[{"id":"project.profile"},{"id":"project.scenario"},{"id":"project.inputs"}]}],"layoutOptions":{"elk.direction":"UP"}},"roles":{},"icons":{"library":"library","project.profile":"selection","project.scenario":"capture","project.inputs":"document"},"edgeLabels":true}},"rule":"dependency-layout"},{"rationale":"Selected focal and source-gap roles use the chosen theme; no evidence state is promoted to approval.","questionRefs":["publication"],"subjectRefs":["library"],"evidenceRefs":[],"changes":{"presentation":{"graph":{"id":"ownership","children":[{"id":"library"},{"id":"project","children":[{"id":"project.profile"},{"id":"project.scenario"},{"id":"project.inputs"}]}],"layoutOptions":{"elk.direction":"UP"}},"roles":{"library":"focal"},"icons":{"library":"library","project.profile":"selection","project.scenario":"capture","project.inputs":"document"},"edgeLabels":true}},"rule":"visual-hierarchy"}]},"presentation":{"graph":{"id":"ownership","children":[{"id":"library"},{"id":"project","children":[{"id":"project.profile"},{"id":"project.scenario"},{"id":"project.inputs"}]}],"layoutOptions":{"elk.direction":"UP"}},"roles":{"library":"focal"},"icons":{"library":"library","project.profile":"selection","project.scenario":"capture","project.inputs":"document"},"edgeLabels":true},"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":"63be78f1745618eef5d201f28a0d080c369f78f91fd7429496d0d5fdd5562297","model":{"subjects":[{"id":"library","type":"rectangle","level":1,"label":"Library\nDefinitions and contracts"},{"id":"project","type":"rectangle","level":1,"label":"Project"},{"id":"project.profile","type":"rectangle","level":2,"label":"Profile\nSelects published definitions"},{"id":"project.scenario","type":"rectangle","level":2,"label":"Scenario\nBinds project inputs"},{"id":"project.inputs","type":"rectangle","level":2,"label":"Repository inputs\nModels / Org / decisions"}],"relations":[{"id":"(project.profile -> library)[0]","src":"project.profile","dst":"library","label":"selects","srcArrow":"none","dstArrow":"triangle"},{"id":"project.(scenario -> profile)[0]","src":"project.scenario","dst":"project.profile","label":"binds","srcArrow":"none","dstArrow":"triangle"},{"id":"(project.scenario -> library)[0]","src":"project.scenario","dst":"library","label":"references definitions","srcArrow":"none","dstArrow":"triangle"},{"id":"project.(scenario -> inputs)[0]","src":"project.scenario","dst":"project.inputs","label":"binds actual inputs","srcArrow":"none","dstArrow":"triangle"}]},"view":{"source":"docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices.d2","title":"Library / Profile / Scenario: Question-driven design","purpose":"architecture","kind":"design-comparison","question":{"subjectRefs":["library"],"ref":"publication","text":"Who owns the reusable definitions?","focusRefs":["library","profile","model"]},"basis":{"captureRef":"design-candidate:library-design-taste","modelRefs":["project.sysml"],"obligationRefs":["docs/10-19-design/10-architecture/10.145-design-taste-public-contracts.org"],"evidenceRefs":[]}},"questions":[{"subjectRefs":["library"],"ref":"publication","text":"Who owns the reusable definitions?","focusRefs":["library","profile","model"]}],"references":{"capture-gap":"scenarios/project-formation/func.ss","case":"docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture.d2","library":"library/project-organization/objects.ss","model":"project.sysml","profile":"profiles/library-formation.ss","scenario":"scenarios/project-formation/func.ss","source":"docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices.d2"},"sourceSHA256":{"docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture.d2":"865851b9efa36c9ddadd9d4e5284b4214564d6f57e3e6e85930709a92f7a96fc","docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices.d2":"394c73914d695c9990f1f3fa85d2a2964c6838c7380f0cc6f0d60b912eb03481","library/project-organization/objects.ss":"f660d3d90a55a9d7deff8782194dbdc952e85ecfd52463577e8ab1be9905a6b6","packages/render/examples/attribution.ts":"58f7914284a69c4ce42db61ec24c06cf9194232ed3402fc7ae12e3ded4187892","packages/render/examples/design-case.ts":"70c1e9886e11e867023ac72db3bc0c7e0c62bf3ea3d52db334a9251d63a108ea","packages/render/examples/design-choices.ts":"c549f116af5faded85ae887590bfd123cc5db298302cab0c0f8ad12c45680536","packages/render/package.json":"cdb4f5d8639d7fdd389973db286612d5db57b42c873fdc3a2316dd1ac9f0c371","packages/render/src/design.ts":"5cf15ef5faa1b968800e1c08822e473b2d2fd1f86c921aad9d2e1f9a75f4fc1a","packages/render/src/diagram.ts":"c0e831979970fc90c418820e4462d2097492811f10c7619dab1469b31194a32b","packages/render/src/export.ts":"791963ea500bb6c08af8def6605b1366b5afc887796862f01b3ee76465dbfab2","packages/render/src/figure.ts":"4f994cc394859027e4986635bffc1b45144a01140e19a1ce6b7b5748fa58bbd7","packages/render/src/model-view.ts":"8a2c575c8c1a2f09770fb4cfdbe6718121a66c4fe8b32c97f7b2d88c9f7a57fc","packages/render/src/scene-export.ts":"f5ba1250e1fe5e6c952ada3bc501979e4f9b8a8a0506a62a6e4cebdaf256a217","packages/render/src/taste-policies.ts":"9a6b5519ea51c8560b6fa33e6582cdc99ac3b6a19e69387fbb8e2a284d2058d9","packages/render/src/taste-selection.ts":"0d1d9477176d8da9f15c4f33bc8dc9d057384abd0d9cd13862f48e410fe2e897","packages/render/src/taste.ts":"4ae78ea584e10525d66dd6df685205a3bd6d7e635da531475e84a95262067893","profiles/library-formation.ss":"5b124cfda09b5d2d950481ae8f1e6143a135f7f1c0ce0328fd3de5407e732c1f","project.sysml":"a1df4b8bd19d07011e1bf7d54b46ef855c66029ac543424743c7e388146bd9b1","scenarios/project-formation/func.ss":"b3943c92bf48daac75b456e5a994aedba099226ba6aa232e937dae57e53e1350"},"rendered":{"observation":{"canvas":{"x":0,"y":0,"width":1200,"height":932},"subjects":[{"id":"project","role":"default","x":325.8243408203125,"y":322.19061279296875,"width":550.8900756835938,"height":341.99114990234375},{"id":"library","role":"focal","x":438,"y":131.58004760742188,"width":215.15960693359375,"height":86.89974975585938},{"id":"project.profile","role":"default","owner":"project","x":392.9620361328125,"y":402,"width":229.5379638671875,"height":83.45523071289062},{"id":"project.scenario","role":"default","owner":"project","x":462.71929931640625,"y":563.423583984375,"width":181.41455078125,"height":84.1339111328125},{"id":"project.inputs","role":"default","owner":"project","x":642.5,"y":401.65966796875,"width":208.4544677734375,"height":84.07254028320312}],"relations":["(project.profile -> library)[0]","project.(scenario -> profile)[0]","(project.scenario -> library)[0]","project.(scenario -> inputs)[0]"],"headings":[{"role":"title","x":20,"y":20,"width":1160,"height":48},{"role":"question","x":20,"y":68,"width":1160,"height":34},{"role":"answer","x":20,"y":695,"width":1160,"height":31},{"role":"note","x":20,"y":730,"width":1160,"height":27},{"role":"note","x":20,"y":761,"width":1160,"height":27},{"role":"note","x":20,"y":792,"width":1160,"height":27},{"role":"note","x":20,"y":823,"width":1160,"height":27},{"role":"note","x":20,"y":854,"width":1160,"height":27},{"role":"note","x":20,"y":885,"width":1160,"height":27}]},"readability":{"minimumTextSize":12,"samples":23},"bounds":{"model":{"x":20,"y":110,"width":1160,"height":571}}}}Library / Profile / Scenario: Question-driven design?Who owns the reusable definitions?{"graph":{"id":"ownership","children":[{"id":"library"},{"id":"project","children":[{"id":"project.profile"},{"id":"project.scenario"},{"id":"project.inputs"}]}],"layoutOptions":{"elk.spacing.nodeNode":"24","elk.layered.spacing.nodeNodeBetweenLayers":"36","elk.direction":"UP"},"edges":[{"id":"(project.profile -> library)[0]","sources":["project.profile"],"targets":["library"]},{"id":"project.(scenario -> profile)[0]","sources":["project.scenario"],"targets":["project.profile"]},{"id":"(project.scenario -> library)[0]","sources":["project.scenario"],"targets":["library"]},{"id":"project.(scenario -> inputs)[0]","sources":["project.scenario"],"targets":["project.inputs"]}]},"marker":"arrow-c322333a681a"}Projectselectsbindsreferences definitionsbinds actual inputsLibraryDefinitions and contractsProfileSelects published definitionsScenarioBinds project inputsRepository inputsModels / Org / decisionsLibrary adopter1 subjects are explicitly linked to the selected Questions.Retain 5 displayed subjects, including required references and their declared containers.Focal subjects have 2 incoming and 0 outgoing relationships; select ELK UP.Selected focal and source-gap roles use the chosen theme; no evidence state is promoted to approval.Selected source observations: unobservedCurrent repository source observations only · no C/Q/R issued \ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-comparison.html b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-comparison.html new file mode 100644 index 0000000..a23dab4 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-comparison.html @@ -0,0 +1,23 @@ + + +Library / Profile / Scenario: Question-driven design
One Taste pipeline. Different Questions and source observations.Model facts and required references stay fixed; Taste selects scope, hierarchy and ELK preferences.
adopter
maintainer
source-gap
\ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-comparison.json b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-comparison.json new file mode 100644 index 0000000..b722140 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-comparison.json @@ -0,0 +1,114 @@ +{ + "sources": { + "docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture.d2": "865851b9efa36c9ddadd9d4e5284b4214564d6f57e3e6e85930709a92f7a96fc", + "docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices.d2": "394c73914d695c9990f1f3fa85d2a2964c6838c7380f0cc6f0d60b912eb03481", + "library/project-organization/objects.ss": "f660d3d90a55a9d7deff8782194dbdc952e85ecfd52463577e8ab1be9905a6b6", + "packages/render/examples/attribution.ts": "58f7914284a69c4ce42db61ec24c06cf9194232ed3402fc7ae12e3ded4187892", + "packages/render/examples/design-case.ts": "70c1e9886e11e867023ac72db3bc0c7e0c62bf3ea3d52db334a9251d63a108ea", + "packages/render/examples/design-choices.ts": "c549f116af5faded85ae887590bfd123cc5db298302cab0c0f8ad12c45680536", + "packages/render/package.json": "cdb4f5d8639d7fdd389973db286612d5db57b42c873fdc3a2316dd1ac9f0c371", + "packages/render/src/design.ts": "5cf15ef5faa1b968800e1c08822e473b2d2fd1f86c921aad9d2e1f9a75f4fc1a", + "packages/render/src/diagram.ts": "c0e831979970fc90c418820e4462d2097492811f10c7619dab1469b31194a32b", + "packages/render/src/export.ts": "791963ea500bb6c08af8def6605b1366b5afc887796862f01b3ee76465dbfab2", + "packages/render/src/figure.ts": "4f994cc394859027e4986635bffc1b45144a01140e19a1ce6b7b5748fa58bbd7", + "packages/render/src/model-view.ts": "8a2c575c8c1a2f09770fb4cfdbe6718121a66c4fe8b32c97f7b2d88c9f7a57fc", + "packages/render/src/scene-export.ts": "f5ba1250e1fe5e6c952ada3bc501979e4f9b8a8a0506a62a6e4cebdaf256a217", + "packages/render/src/taste-policies.ts": "9a6b5519ea51c8560b6fa33e6582cdc99ac3b6a19e69387fbb8e2a284d2058d9", + "packages/render/src/taste-selection.ts": "0d1d9477176d8da9f15c4f33bc8dc9d057384abd0d9cd13862f48e410fe2e897", + "packages/render/src/taste.ts": "4ae78ea584e10525d66dd6df685205a3bd6d7e635da531475e84a95262067893", + "profiles/library-formation.ss": "5b124cfda09b5d2d950481ae8f1e6143a135f7f1c0ce0328fd3de5407e732c1f", + "project.sysml": "a1df4b8bd19d07011e1bf7d54b46ef855c66029ac543424743c7e388146bd9b1", + "scenarios/project-formation/func.ss": "b3943c92bf48daac75b456e5a994aedba099226ba6aa232e937dae57e53e1350" + }, + "receipt": { + "attribution": { + "copyright": [ + "2026 hardenedlinux Linux Team and Contributors", + "2014 Indian Type Foundry (info@indiantypefoundry.com)" + ], + "license": "LGPL-2.1-or-later AND OFL-1.1" + }, + "observation": { + "canvas": { + "x": 0, + "y": 0, + "width": 1200, + "height": 2945.984375 + }, + "subjects": [], + "relations": [], + "headings": [ + { + "role": "title", + "x": 20, + "y": 20, + "width": 1160, + "height": 48 + }, + { + "role": "note", + "x": 20, + "y": 78, + "width": 1160, + "height": 27 + } + ] + }, + "canvas": { + "background": "rgb(250, 247, 238)", + "transparent": false + }, + "readability": { + "minimumTextSize": 13, + "samples": 2 + }, + "inputSHA256": "19efe618b37a6690026d2d953917772c1b07d425e25d81d1337e3ed583afc619", + "scenes": [], + "svgSHA256": [ + "e85d0058944ef3ca98acfa51fb9782f4ccb2964e6083d8abec53cfae6b9efe13" + ], + "composedHTMLSHA256": "99975b4745fb51837d87b3dd32e7836fd0c7704d9f07304bf58b2a0e06676a68", + "dependencies": { + "@fontsource/inter": "5.3.0", + "@fontsource/kalam": "5.3.0", + "@terrastruct/d2": "0.1.33", + "@xyflow/system": "0.0.83", + "elkjs": "0.12.1", + "parse5": "8.0.1", + "roughjs": "4.6.6", + "valibot": "1.2.0", + "web-worker": "1.5.0" + }, + "regionSHA256": {}, + "htmlSHA256": "191ab6e4f696ccecc06bd8286999253ba745341109716dca1b0896f136f9c015", + "drawing": "roughjs@4.6.6", + "routing": "none", + "assetSHA256": { + "@fontsource/kalam/files/kalam-latin-400-normal.woff2": "954410601a823f37e219f7930b7446f86afa15621326a7078d56fb9c910135cb", + "@fontsource/kalam/files/kalam-latin-700-normal.woff2": "252063af6ade8b9a744cde4ddad0fc21ea53b8ba711eed121a0c2e8610ea9c93" + }, + "pngSHA256": "95b8a5bd7331f1547941abace6a44bae1693575382ac54ed0137e22ce5c003f6", + "browser": "156.0.8078.4", + "width": 1200, + "height": 2946, + "scale": 1, + "bounds": {} + }, + "candidates": [ + { + "name": "adopter", + "hash": "9ac66a732fc3c7de88a07d0dab2586552fa035dee6b60dfa522e1f85e6e5a3bb", + "drawing": "roughjs@4.6.6" + }, + { + "name": "maintainer", + "hash": "46f3e5a829a8ac9d9daba9cad6e1bfe8db828ee44e50d5f2323c56ea549118e5", + "drawing": "roughjs@4.6.6" + }, + { + "name": "source-gap", + "hash": "5c236bc5935cb9d57bdaa52098980b9cdc480084939ec379217efc9230588837", + "drawing": "roughjs@4.6.6" + } + ] +} \ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-comparison.json.license b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-comparison.json.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-comparison.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-comparison.png b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-comparison.png new file mode 100644 index 0000000..bfa06b4 Binary files /dev/null and b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-comparison.png differ diff --git a/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-comparison.png.license b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-comparison.png.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-comparison.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-maintainer.html b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-maintainer.html new file mode 100644 index 0000000..cd7769e --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-maintainer.html @@ -0,0 +1,75 @@ + + +Library / Profile / Scenario: Question-driven design
Library / Profile / Scenario: Question-driven design?Who binds the actual project inputs?
{"graph":{"id":"ownership","children":[{"id":"library"},{"id":"project","children":[{"id":"project.profile"},{"id":"project.scenario"},{"id":"project.inputs"}]}],"layoutOptions":{"elk.spacing.nodeNode":"24","elk.layered.spacing.nodeNodeBetweenLayers":"36","elk.direction":"DOWN"},"edges":[{"id":"(project.profile -> library)[0]","sources":["project.profile"],"targets":["library"]},{"id":"project.(scenario -> profile)[0]","sources":["project.scenario"],"targets":["project.profile"]},{"id":"(project.scenario -> library)[0]","sources":["project.scenario"],"targets":["library"]},{"id":"project.(scenario -> inputs)[0]","sources":["project.scenario"],"targets":["project.inputs"]}]},"marker":"arrow-c322333a681a"}Projectselectsbindsreferences definitionsbinds actual inputsLibraryDefinitions and contractsProfileSelects published definitionsScenarioBinds project inputsRepository inputsModels / Org / decisions
Project maintainer1 subjects are explicitly linked to the selected Questions.Retain 5 displayed subjects, including required references and their declared containers.Focal subjects have 0 incoming and 3 outgoing relationships; select ELK DOWN.Selected focal and source-gap roles use the chosen theme; no evidence state is promoted to approval.Selected source observations: unobservedCurrent repository source observations only · no C/Q/R issued
\ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-maintainer.json b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-maintainer.json new file mode 100644 index 0000000..fd409c7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-maintainer.json @@ -0,0 +1,514 @@ +{ + "sources": { + "docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture.d2": "865851b9efa36c9ddadd9d4e5284b4214564d6f57e3e6e85930709a92f7a96fc", + "docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices.d2": "394c73914d695c9990f1f3fa85d2a2964c6838c7380f0cc6f0d60b912eb03481", + "library/project-organization/objects.ss": "f660d3d90a55a9d7deff8782194dbdc952e85ecfd52463577e8ab1be9905a6b6", + "packages/render/examples/attribution.ts": "58f7914284a69c4ce42db61ec24c06cf9194232ed3402fc7ae12e3ded4187892", + "packages/render/examples/design-case.ts": "70c1e9886e11e867023ac72db3bc0c7e0c62bf3ea3d52db334a9251d63a108ea", + "packages/render/examples/design-choices.ts": "c549f116af5faded85ae887590bfd123cc5db298302cab0c0f8ad12c45680536", + "packages/render/package.json": "cdb4f5d8639d7fdd389973db286612d5db57b42c873fdc3a2316dd1ac9f0c371", + "packages/render/src/design.ts": "5cf15ef5faa1b968800e1c08822e473b2d2fd1f86c921aad9d2e1f9a75f4fc1a", + "packages/render/src/diagram.ts": "c0e831979970fc90c418820e4462d2097492811f10c7619dab1469b31194a32b", + "packages/render/src/export.ts": "791963ea500bb6c08af8def6605b1366b5afc887796862f01b3ee76465dbfab2", + "packages/render/src/figure.ts": "4f994cc394859027e4986635bffc1b45144a01140e19a1ce6b7b5748fa58bbd7", + "packages/render/src/model-view.ts": "8a2c575c8c1a2f09770fb4cfdbe6718121a66c4fe8b32c97f7b2d88c9f7a57fc", + "packages/render/src/scene-export.ts": "f5ba1250e1fe5e6c952ada3bc501979e4f9b8a8a0506a62a6e4cebdaf256a217", + "packages/render/src/taste-policies.ts": "9a6b5519ea51c8560b6fa33e6582cdc99ac3b6a19e69387fbb8e2a284d2058d9", + "packages/render/src/taste-selection.ts": "0d1d9477176d8da9f15c4f33bc8dc9d057384abd0d9cd13862f48e410fe2e897", + "packages/render/src/taste.ts": "4ae78ea584e10525d66dd6df685205a3bd6d7e635da531475e84a95262067893", + "profiles/library-formation.ss": "5b124cfda09b5d2d950481ae8f1e6143a135f7f1c0ce0328fd3de5407e732c1f", + "project.sysml": "a1df4b8bd19d07011e1bf7d54b46ef855c66029ac543424743c7e388146bd9b1", + "scenarios/project-formation/func.ss": "b3943c92bf48daac75b456e5a994aedba099226ba6aa232e937dae57e53e1350" + }, + "receipt": { + "attribution": { + "copyright": [ + "2026 hardenedlinux Linux Team and Contributors", + "2014 Indian Type Foundry (info@indiantypefoundry.com)" + ], + "license": "LGPL-2.1-or-later AND OFL-1.1" + }, + "observation": { + "canvas": { + "x": 0, + "y": 0, + "width": 1200, + "height": 932 + }, + "subjects": [ + { + "id": "project", + "role": "default", + "x": 325.8243408203125, + "y": 131.19061279296875, + "width": 550.8900756835938, + "height": 343.50054931640625 + }, + { + "id": "library", + "role": "default", + "x": 438, + "y": 575.580078125, + "width": 215.15960693359375, + "height": 85.39031982421875 + }, + { + "id": "project.profile", + "role": "default", + "owner": "project", + "x": 392.9620361328125, + "y": 375, + "width": 229.5379638671875, + "height": 83.45523071289062 + }, + { + "id": "project.scenario", + "role": "focal", + "owner": "project", + "x": 462.71929931640625, + "y": 210.42356872558594, + "width": 181.41455078125, + "height": 86.76896667480469 + }, + { + "id": "project.inputs", + "role": "default", + "owner": "project", + "x": 642.5, + "y": 374.65966796875, + "width": 208.4544677734375, + "height": 84.07254028320312 + } + ], + "relations": [ + "(project.profile -> library)[0]", + "project.(scenario -> profile)[0]", + "(project.scenario -> library)[0]", + "project.(scenario -> inputs)[0]" + ], + "headings": [ + { + "role": "title", + "x": 20, + "y": 20, + "width": 1160, + "height": 48 + }, + { + "role": "question", + "x": 20, + "y": 68, + "width": 1160, + "height": 34 + }, + { + "role": "answer", + "x": 20, + "y": 695, + "width": 1160, + "height": 31 + }, + { + "role": "note", + "x": 20, + "y": 730, + "width": 1160, + "height": 27 + }, + { + "role": "note", + "x": 20, + "y": 761, + "width": 1160, + "height": 27 + }, + { + "role": "note", + "x": 20, + "y": 792, + "width": 1160, + "height": 27 + }, + { + "role": "note", + "x": 20, + "y": 823, + "width": 1160, + "height": 27 + }, + { + "role": "note", + "x": 20, + "y": 854, + "width": 1160, + "height": 27 + }, + { + "role": "note", + "x": 20, + "y": 885, + "width": 1160, + "height": 27 + } + ] + }, + "canvas": { + "background": "rgb(250, 247, 238)", + "transparent": false + }, + "readability": { + "minimumTextSize": 12, + "samples": 23 + }, + "inputSHA256": "a7c85da16b5416aa04c6314bb7648667c20ba06d4ca63840d95eed64ee95f853", + "scenes": [ + { + "inputSHA256": "3ccce8014486dc272fee21693d2f3319a0c4aa467bc0ff4f8245c423297b7197", + "layoutSHA256": "8d88bb23ac52b9dd04475148f845d5252945bdc4f9f8336efbccce1e22857f86", + "nodes": 5, + "edges": 4, + "milliseconds": 147.6472920000001 + } + ], + "svgSHA256": [ + "97a7067b796391c2db2ad4464eada2c6fac7256a839aed5124f1d79ba8205611", + "b29fc862c86af70d62150f8d24e10980cf783ff7d67c5ec3154a9a4641354180" + ], + "composedHTMLSHA256": "2304f3f6483394532319a8d1bcfaee44f24586a1ad797999975a1816c3493c7b", + "dependencies": { + "@fontsource/inter": "5.3.0", + "@fontsource/kalam": "5.3.0", + "@terrastruct/d2": "0.1.33", + "@xyflow/system": "0.0.83", + "elkjs": "0.12.1", + "parse5": "8.0.1", + "roughjs": "4.6.6", + "valibot": "1.2.0", + "web-worker": "1.5.0" + }, + "regionSHA256": {}, + "htmlSHA256": "360bf71643d0c759785cbd8a7d621749163143602c4bed60a8fd26ccba042543", + "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" + }, + "pngSHA256": "46f3e5a829a8ac9d9daba9cad6e1bfe8db828ee44e50d5f2323c56ea549118e5", + "browser": "156.0.8078.4", + "width": 1800, + "height": 1398, + "scale": 1.5, + "bounds": { + "model": { + "x": 20, + "y": 110, + "width": 1160, + "height": 571 + } + } + }, + "taste": { + "inputSHA256": "a7c85da16b5416aa04c6314bb7648667c20ba06d4ca63840d95eed64ee95f853", + "htmlSHA256": "360bf71643d0c759785cbd8a7d621749163143602c4bed60a8fd26ccba042543", + "pngSHA256": "46f3e5a829a8ac9d9daba9cad6e1bfe8db828ee44e50d5f2323c56ea549118e5", + "design": { + "audience": "Project maintainer", + "medium": "README component view", + "message": "Library publishes; Profile selects; Scenario binds actual inputs.", + "questionRefs": [ + "binding" + ], + "requiredSubjects": [ + "library", + "project", + "project.profile", + "project.scenario", + "project.inputs" + ], + "requiredRelations": [ + "(project.profile -> library)[0]", + "project.(scenario -> profile)[0]", + "(project.scenario -> library)[0]", + "project.(scenario -> inputs)[0]" + ], + "focalSubjects": [ + "project.scenario" + ] + }, + "sourceSHA256": { + "docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture.d2": "865851b9efa36c9ddadd9d4e5284b4214564d6f57e3e6e85930709a92f7a96fc", + "docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices.d2": "394c73914d695c9990f1f3fa85d2a2964c6838c7380f0cc6f0d60b912eb03481", + "library/project-organization/objects.ss": "f660d3d90a55a9d7deff8782194dbdc952e85ecfd52463577e8ab1be9905a6b6", + "packages/render/examples/attribution.ts": "58f7914284a69c4ce42db61ec24c06cf9194232ed3402fc7ae12e3ded4187892", + "packages/render/examples/design-case.ts": "70c1e9886e11e867023ac72db3bc0c7e0c62bf3ea3d52db334a9251d63a108ea", + "packages/render/examples/design-choices.ts": "c549f116af5faded85ae887590bfd123cc5db298302cab0c0f8ad12c45680536", + "packages/render/package.json": "cdb4f5d8639d7fdd389973db286612d5db57b42c873fdc3a2316dd1ac9f0c371", + "packages/render/src/design.ts": "5cf15ef5faa1b968800e1c08822e473b2d2fd1f86c921aad9d2e1f9a75f4fc1a", + "packages/render/src/diagram.ts": "c0e831979970fc90c418820e4462d2097492811f10c7619dab1469b31194a32b", + "packages/render/src/export.ts": "791963ea500bb6c08af8def6605b1366b5afc887796862f01b3ee76465dbfab2", + "packages/render/src/figure.ts": "4f994cc394859027e4986635bffc1b45144a01140e19a1ce6b7b5748fa58bbd7", + "packages/render/src/model-view.ts": "8a2c575c8c1a2f09770fb4cfdbe6718121a66c4fe8b32c97f7b2d88c9f7a57fc", + "packages/render/src/scene-export.ts": "f5ba1250e1fe5e6c952ada3bc501979e4f9b8a8a0506a62a6e4cebdaf256a217", + "packages/render/src/taste-policies.ts": "9a6b5519ea51c8560b6fa33e6582cdc99ac3b6a19e69387fbb8e2a284d2058d9", + "packages/render/src/taste-selection.ts": "0d1d9477176d8da9f15c4f33bc8dc9d057384abd0d9cd13862f48e410fe2e897", + "packages/render/src/taste.ts": "4ae78ea584e10525d66dd6df685205a3bd6d7e635da531475e84a95262067893", + "profiles/library-formation.ss": "5b124cfda09b5d2d950481ae8f1e6143a135f7f1c0ce0328fd3de5407e732c1f", + "project.sysml": "a1df4b8bd19d07011e1bf7d54b46ef855c66029ac543424743c7e388146bd9b1", + "scenarios/project-formation/func.ss": "b3943c92bf48daac75b456e5a994aedba099226ba6aa232e937dae57e53e1350" + }, + "selection": { + "bindingSHA256": "7e962aea1ac96f9b62bb4b0b288ad19efd404f75145919824331ad092b27a6b3", + "decisions": [ + { + "rationale": "1 subjects are explicitly linked to the selected Questions.", + "questionRefs": [ + "binding" + ], + "subjectRefs": [ + "project.scenario" + ], + "evidenceRefs": [], + "changes": { + "design": { + "audience": "Project maintainer", + "medium": "README component view", + "message": "Library publishes; Profile selects; Scenario binds actual inputs.", + "questionRefs": [ + "binding" + ], + "requiredSubjects": [ + "library", + "project", + "project.profile", + "project.scenario", + "project.inputs" + ], + "requiredRelations": [ + "(project.profile -> library)[0]", + "project.(scenario -> profile)[0]", + "(project.scenario -> library)[0]", + "project.(scenario -> inputs)[0]" + ], + "focalSubjects": [ + "project.scenario" + ] + } + }, + "rule": "question-focus" + }, + { + "rationale": "Retain 5 displayed subjects, including required references and their declared containers.", + "questionRefs": [ + "binding" + ], + "subjectRefs": [ + "library", + "project", + "project.profile", + "project.scenario", + "project.inputs" + ], + "evidenceRefs": [], + "changes": { + "presentation": { + "graph": { + "id": "ownership", + "children": [ + { + "id": "library" + }, + { + "id": "project", + "children": [ + { + "id": "project.profile" + }, + { + "id": "project.scenario" + }, + { + "id": "project.inputs" + } + ] + } + ], + "layoutOptions": {} + }, + "roles": {}, + "icons": { + "library": "library", + "project.profile": "selection", + "project.scenario": "capture", + "project.inputs": "document" + }, + "edgeLabels": true + } + }, + "rule": "question-scope" + }, + { + "rationale": "Focal subjects have 0 incoming and 3 outgoing relationships; select ELK DOWN.", + "questionRefs": [ + "binding" + ], + "subjectRefs": [ + "project.scenario" + ], + "evidenceRefs": [], + "changes": { + "presentation": { + "graph": { + "id": "ownership", + "children": [ + { + "id": "library" + }, + { + "id": "project", + "children": [ + { + "id": "project.profile" + }, + { + "id": "project.scenario" + }, + { + "id": "project.inputs" + } + ] + } + ], + "layoutOptions": { + "elk.direction": "DOWN" + } + }, + "roles": {}, + "icons": { + "library": "library", + "project.profile": "selection", + "project.scenario": "capture", + "project.inputs": "document" + }, + "edgeLabels": true + } + }, + "rule": "dependency-layout" + }, + { + "rationale": "Selected focal and source-gap roles use the chosen theme; no evidence state is promoted to approval.", + "questionRefs": [ + "binding" + ], + "subjectRefs": [ + "project.scenario" + ], + "evidenceRefs": [], + "changes": { + "presentation": { + "graph": { + "id": "ownership", + "children": [ + { + "id": "library" + }, + { + "id": "project", + "children": [ + { + "id": "project.profile" + }, + { + "id": "project.scenario" + }, + { + "id": "project.inputs" + } + ] + } + ], + "layoutOptions": { + "elk.direction": "DOWN" + } + }, + "roles": { + "project.scenario": "focal" + }, + "icons": { + "library": "library", + "project.profile": "selection", + "project.scenario": "capture", + "project.inputs": "document" + }, + "edgeLabels": true + } + }, + "rule": "visual-hierarchy" + } + ] + }, + "judgments": [ + { + "rule": "question-focus", + "rationale": "Choose emphasis from selected Question/model bindings.", + "notes": [] + }, + { + "rule": "evidence-focus", + "rationale": "Expose selected counterevidence, conflict, stale or missing source observations.", + "notes": [] + }, + { + "rule": "question-scope", + "rationale": "Choose the view scope from Questions while preserving all required references.", + "notes": [] + }, + { + "rule": "dependency-layout", + "rationale": "Orient the selected relationship view around its focal dependency position.", + "notes": [] + }, + { + "rule": "visual-hierarchy", + "rationale": "Give focal subjects and selected source gaps distinct visual roles.", + "notes": [] + }, + { + "rule": "minimum-text-size", + "rationale": "Read SVG text at the selected logical display size.", + "parameters": { + "minimum": 12 + }, + "notes": [ + { + "kind": "observation", + "message": "Observed minimum 12.00 CSS px; selected preference 12 CSS px.", + "questionRefs": [ + "binding" + ], + "subjectRefs": [] + } + ] + }, + { + "rule": "focal-budget", + "rationale": "Reserve emphasis for the selected reader question.", + "parameters": { + "maximum": 2 + }, + "notes": [ + { + "kind": "observation", + "message": "1 declared focal subjects; selected preference at most 2.", + "questionRefs": [ + "binding" + ], + "subjectRefs": [ + "project.scenario" + ] + } + ] + } + ] + } +} \ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-maintainer.json.license b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-maintainer.json.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-maintainer.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-maintainer.png b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-maintainer.png new file mode 100644 index 0000000..9c1f254 Binary files /dev/null and b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-maintainer.png differ diff --git a/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-maintainer.png.license b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-maintainer.png.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-maintainer.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-maintainer.svg b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-maintainer.svg new file mode 100644 index 0000000..51a78b0 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-maintainer.svg @@ -0,0 +1,75 @@ + +{"renderer":{"package":"@deterministic-engineering/render","version":"1.0.0","icons":{"capture":"a647d42aa11f4e5e85d0bbf66f483f57f3c4ba3a9536362ed0eaaaae10a89cee","decision":"3535642a5b613372c3fd374151ec90aafa19b64b2d33d10b19162cad07a35c7a","document":"0bf9674a401262da8a646305cab00006954721c07765b9962e0dee1c31d560f7","evidence":"0a91b169aaa644829a054cbb94194efffaf4298f2b6f8fa8c6ec2b7b413a1766","library":"df474fa36a74016b79236fff58a980a8c18c682d1866211776e349a0eb4b2979","model":"0cfd1f9ed3873f556ace725a7b6a251ebe75d7d976567699276f34df36b2443b","obligation":"e76f4d34a7190400446c89e4e7d187762b885808a64a00c99455599d902570c5","pending":"cca7589bc3b1dcdebacb867c6836c6fc166257f05823555a268354ff9bfac00c","question":"dbf231e1568dc37189d5674d73c4bfc58a17eb8ada579b3f03bf2813d33c56f4","reference":"3814c570f79ab294252c36530de464c9364814b797afb862d9c62e728a8660fc","selection":"82b4ab6faf195fea0a891c35268e61c186e93e7c6a9d7967a4f6a73dbf25ae7f"}},"design":{"audience":"Project maintainer","medium":"README component view","message":"Library publishes; Profile selects; Scenario binds actual inputs.","questionRefs":["binding"],"requiredSubjects":["library","project","project.profile","project.scenario","project.inputs"],"requiredRelations":["(project.profile -> library)[0]","project.(scenario -> profile)[0]","(project.scenario -> library)[0]","project.(scenario -> inputs)[0]"],"focalSubjects":["project.scenario"]},"evidence":[],"taste":{"bindingSHA256":"7e962aea1ac96f9b62bb4b0b288ad19efd404f75145919824331ad092b27a6b3","decisions":[{"rationale":"1 subjects are explicitly linked to the selected Questions.","questionRefs":["binding"],"subjectRefs":["project.scenario"],"evidenceRefs":[],"changes":{"design":{"audience":"Project maintainer","medium":"README component view","message":"Library publishes; Profile selects; Scenario binds actual inputs.","questionRefs":["binding"],"requiredSubjects":["library","project","project.profile","project.scenario","project.inputs"],"requiredRelations":["(project.profile -> library)[0]","project.(scenario -> profile)[0]","(project.scenario -> library)[0]","project.(scenario -> inputs)[0]"],"focalSubjects":["project.scenario"]}},"rule":"question-focus"},{"rationale":"Retain 5 displayed subjects, including required references and their declared containers.","questionRefs":["binding"],"subjectRefs":["library","project","project.profile","project.scenario","project.inputs"],"evidenceRefs":[],"changes":{"presentation":{"graph":{"id":"ownership","children":[{"id":"library"},{"id":"project","children":[{"id":"project.profile"},{"id":"project.scenario"},{"id":"project.inputs"}]}],"layoutOptions":{}},"roles":{},"icons":{"library":"library","project.profile":"selection","project.scenario":"capture","project.inputs":"document"},"edgeLabels":true}},"rule":"question-scope"},{"rationale":"Focal subjects have 0 incoming and 3 outgoing relationships; select ELK DOWN.","questionRefs":["binding"],"subjectRefs":["project.scenario"],"evidenceRefs":[],"changes":{"presentation":{"graph":{"id":"ownership","children":[{"id":"library"},{"id":"project","children":[{"id":"project.profile"},{"id":"project.scenario"},{"id":"project.inputs"}]}],"layoutOptions":{"elk.direction":"DOWN"}},"roles":{},"icons":{"library":"library","project.profile":"selection","project.scenario":"capture","project.inputs":"document"},"edgeLabels":true}},"rule":"dependency-layout"},{"rationale":"Selected focal and source-gap roles use the chosen theme; no evidence state is promoted to approval.","questionRefs":["binding"],"subjectRefs":["project.scenario"],"evidenceRefs":[],"changes":{"presentation":{"graph":{"id":"ownership","children":[{"id":"library"},{"id":"project","children":[{"id":"project.profile"},{"id":"project.scenario"},{"id":"project.inputs"}]}],"layoutOptions":{"elk.direction":"DOWN"}},"roles":{"project.scenario":"focal"},"icons":{"library":"library","project.profile":"selection","project.scenario":"capture","project.inputs":"document"},"edgeLabels":true}},"rule":"visual-hierarchy"}]},"presentation":{"graph":{"id":"ownership","children":[{"id":"library"},{"id":"project","children":[{"id":"project.profile"},{"id":"project.scenario"},{"id":"project.inputs"}]}],"layoutOptions":{"elk.direction":"DOWN"}},"roles":{"project.scenario":"focal"},"icons":{"library":"library","project.profile":"selection","project.scenario":"capture","project.inputs":"document"},"edgeLabels":true},"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":"a7c85da16b5416aa04c6314bb7648667c20ba06d4ca63840d95eed64ee95f853","model":{"subjects":[{"id":"library","type":"rectangle","level":1,"label":"Library\nDefinitions and contracts"},{"id":"project","type":"rectangle","level":1,"label":"Project"},{"id":"project.profile","type":"rectangle","level":2,"label":"Profile\nSelects published definitions"},{"id":"project.scenario","type":"rectangle","level":2,"label":"Scenario\nBinds project inputs"},{"id":"project.inputs","type":"rectangle","level":2,"label":"Repository inputs\nModels / Org / decisions"}],"relations":[{"id":"(project.profile -> library)[0]","src":"project.profile","dst":"library","label":"selects","srcArrow":"none","dstArrow":"triangle"},{"id":"project.(scenario -> profile)[0]","src":"project.scenario","dst":"project.profile","label":"binds","srcArrow":"none","dstArrow":"triangle"},{"id":"(project.scenario -> library)[0]","src":"project.scenario","dst":"library","label":"references definitions","srcArrow":"none","dstArrow":"triangle"},{"id":"project.(scenario -> inputs)[0]","src":"project.scenario","dst":"project.inputs","label":"binds actual inputs","srcArrow":"none","dstArrow":"triangle"}]},"view":{"source":"docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices.d2","title":"Library / Profile / Scenario: Question-driven design","purpose":"architecture","kind":"design-comparison","question":{"subjectRefs":["project.scenario"],"ref":"binding","text":"Who binds the actual project inputs?","focusRefs":["scenario","model"]},"basis":{"captureRef":"design-candidate:library-design-taste","modelRefs":["project.sysml"],"obligationRefs":["docs/10-19-design/10-architecture/10.145-design-taste-public-contracts.org"],"evidenceRefs":[]}},"questions":[{"subjectRefs":["project.scenario"],"ref":"binding","text":"Who binds the actual project inputs?","focusRefs":["scenario","model"]}],"references":{"capture-gap":"scenarios/project-formation/func.ss","case":"docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture.d2","library":"library/project-organization/objects.ss","model":"project.sysml","profile":"profiles/library-formation.ss","scenario":"scenarios/project-formation/func.ss","source":"docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices.d2"},"sourceSHA256":{"docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture.d2":"865851b9efa36c9ddadd9d4e5284b4214564d6f57e3e6e85930709a92f7a96fc","docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices.d2":"394c73914d695c9990f1f3fa85d2a2964c6838c7380f0cc6f0d60b912eb03481","library/project-organization/objects.ss":"f660d3d90a55a9d7deff8782194dbdc952e85ecfd52463577e8ab1be9905a6b6","packages/render/examples/attribution.ts":"58f7914284a69c4ce42db61ec24c06cf9194232ed3402fc7ae12e3ded4187892","packages/render/examples/design-case.ts":"70c1e9886e11e867023ac72db3bc0c7e0c62bf3ea3d52db334a9251d63a108ea","packages/render/examples/design-choices.ts":"c549f116af5faded85ae887590bfd123cc5db298302cab0c0f8ad12c45680536","packages/render/package.json":"cdb4f5d8639d7fdd389973db286612d5db57b42c873fdc3a2316dd1ac9f0c371","packages/render/src/design.ts":"5cf15ef5faa1b968800e1c08822e473b2d2fd1f86c921aad9d2e1f9a75f4fc1a","packages/render/src/diagram.ts":"c0e831979970fc90c418820e4462d2097492811f10c7619dab1469b31194a32b","packages/render/src/export.ts":"791963ea500bb6c08af8def6605b1366b5afc887796862f01b3ee76465dbfab2","packages/render/src/figure.ts":"4f994cc394859027e4986635bffc1b45144a01140e19a1ce6b7b5748fa58bbd7","packages/render/src/model-view.ts":"8a2c575c8c1a2f09770fb4cfdbe6718121a66c4fe8b32c97f7b2d88c9f7a57fc","packages/render/src/scene-export.ts":"f5ba1250e1fe5e6c952ada3bc501979e4f9b8a8a0506a62a6e4cebdaf256a217","packages/render/src/taste-policies.ts":"9a6b5519ea51c8560b6fa33e6582cdc99ac3b6a19e69387fbb8e2a284d2058d9","packages/render/src/taste-selection.ts":"0d1d9477176d8da9f15c4f33bc8dc9d057384abd0d9cd13862f48e410fe2e897","packages/render/src/taste.ts":"4ae78ea584e10525d66dd6df685205a3bd6d7e635da531475e84a95262067893","profiles/library-formation.ss":"5b124cfda09b5d2d950481ae8f1e6143a135f7f1c0ce0328fd3de5407e732c1f","project.sysml":"a1df4b8bd19d07011e1bf7d54b46ef855c66029ac543424743c7e388146bd9b1","scenarios/project-formation/func.ss":"b3943c92bf48daac75b456e5a994aedba099226ba6aa232e937dae57e53e1350"},"rendered":{"observation":{"canvas":{"x":0,"y":0,"width":1200,"height":932},"subjects":[{"id":"project","role":"default","x":325.8243408203125,"y":131.19061279296875,"width":550.8900756835938,"height":343.50054931640625},{"id":"library","role":"default","x":438,"y":575.580078125,"width":215.15960693359375,"height":85.39031982421875},{"id":"project.profile","role":"default","owner":"project","x":392.9620361328125,"y":375,"width":229.5379638671875,"height":83.45523071289062},{"id":"project.scenario","role":"focal","owner":"project","x":462.71929931640625,"y":210.42356872558594,"width":181.41455078125,"height":86.76896667480469},{"id":"project.inputs","role":"default","owner":"project","x":642.5,"y":374.65966796875,"width":208.4544677734375,"height":84.07254028320312}],"relations":["(project.profile -> library)[0]","project.(scenario -> profile)[0]","(project.scenario -> library)[0]","project.(scenario -> inputs)[0]"],"headings":[{"role":"title","x":20,"y":20,"width":1160,"height":48},{"role":"question","x":20,"y":68,"width":1160,"height":34},{"role":"answer","x":20,"y":695,"width":1160,"height":31},{"role":"note","x":20,"y":730,"width":1160,"height":27},{"role":"note","x":20,"y":761,"width":1160,"height":27},{"role":"note","x":20,"y":792,"width":1160,"height":27},{"role":"note","x":20,"y":823,"width":1160,"height":27},{"role":"note","x":20,"y":854,"width":1160,"height":27},{"role":"note","x":20,"y":885,"width":1160,"height":27}]},"readability":{"minimumTextSize":12,"samples":23},"bounds":{"model":{"x":20,"y":110,"width":1160,"height":571}}}}Library / Profile / Scenario: Question-driven design?Who binds the actual project inputs?{"graph":{"id":"ownership","children":[{"id":"library"},{"id":"project","children":[{"id":"project.profile"},{"id":"project.scenario"},{"id":"project.inputs"}]}],"layoutOptions":{"elk.spacing.nodeNode":"24","elk.layered.spacing.nodeNodeBetweenLayers":"36","elk.direction":"DOWN"},"edges":[{"id":"(project.profile -> library)[0]","sources":["project.profile"],"targets":["library"]},{"id":"project.(scenario -> profile)[0]","sources":["project.scenario"],"targets":["project.profile"]},{"id":"(project.scenario -> library)[0]","sources":["project.scenario"],"targets":["library"]},{"id":"project.(scenario -> inputs)[0]","sources":["project.scenario"],"targets":["project.inputs"]}]},"marker":"arrow-c322333a681a"}Projectselectsbindsreferences definitionsbinds actual inputsLibraryDefinitions and contractsProfileSelects published definitionsScenarioBinds project inputsRepository inputsModels / Org / decisionsProject maintainer1 subjects are explicitly linked to the selected Questions.Retain 5 displayed subjects, including required references and their declared containers.Focal subjects have 0 incoming and 3 outgoing relationships; select ELK DOWN.Selected focal and source-gap roles use the chosen theme; no evidence state is promoted to approval.Selected source observations: unobservedCurrent repository source observations only · no C/Q/R issued \ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-source-gap.html b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-source-gap.html new file mode 100644 index 0000000..2b93fbe --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-source-gap.html @@ -0,0 +1,82 @@ + + +Library / Profile / Scenario: Question-driven design
Library / Profile / Scenario: Question-driven design?Who owns the reusable definitions?
{"graph":{"id":"ownership","children":[{"id":"library"},{"id":"project","children":[{"id":"project.profile"},{"id":"project.scenario"},{"id":"project.inputs"}]}],"layoutOptions":{"elk.spacing.nodeNode":"24","elk.layered.spacing.nodeNodeBetweenLayers":"36","elk.direction":"DOWN"},"edges":[{"id":"(project.profile -> library)[0]","sources":["project.profile"],"targets":["library"]},{"id":"project.(scenario -> profile)[0]","sources":["project.scenario"],"targets":["project.profile"]},{"id":"(project.scenario -> library)[0]","sources":["project.scenario"],"targets":["library"]},{"id":"project.(scenario -> inputs)[0]","sources":["project.scenario"],"targets":["project.inputs"]}]},"marker":"arrow-c322333a681a"}Projectselectsbindsreferences definitionsbinds actual inputsLibraryDefinitions and contractsProfileSelects published definitionsScenarioBinds project inputsmissing · capture-gapRepository inputsModels / Org / decisions
Source review1 subjects are explicitly linked to the selected Questions.Selected source projections contain missing; their subjects take visual priority without changing model facts.Retain 5 displayed subjects, including required references and their declared containers.Focal subjects have 0 incoming and 3 outgoing relationships; select ELK DOWN.Selected focal and source-gap roles use the chosen theme; no evidence state is promoted to approval.Selected source observations: missingCurrent repository source observations only · no C/Q/R issued
\ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-source-gap.json b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-source-gap.json new file mode 100644 index 0000000..60feb78 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-source-gap.json @@ -0,0 +1,562 @@ +{ + "sources": { + "docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture.d2": "865851b9efa36c9ddadd9d4e5284b4214564d6f57e3e6e85930709a92f7a96fc", + "docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices.d2": "394c73914d695c9990f1f3fa85d2a2964c6838c7380f0cc6f0d60b912eb03481", + "library/project-organization/objects.ss": "f660d3d90a55a9d7deff8782194dbdc952e85ecfd52463577e8ab1be9905a6b6", + "packages/render/examples/attribution.ts": "58f7914284a69c4ce42db61ec24c06cf9194232ed3402fc7ae12e3ded4187892", + "packages/render/examples/design-case.ts": "70c1e9886e11e867023ac72db3bc0c7e0c62bf3ea3d52db334a9251d63a108ea", + "packages/render/examples/design-choices.ts": "c549f116af5faded85ae887590bfd123cc5db298302cab0c0f8ad12c45680536", + "packages/render/package.json": "cdb4f5d8639d7fdd389973db286612d5db57b42c873fdc3a2316dd1ac9f0c371", + "packages/render/src/design.ts": "5cf15ef5faa1b968800e1c08822e473b2d2fd1f86c921aad9d2e1f9a75f4fc1a", + "packages/render/src/diagram.ts": "c0e831979970fc90c418820e4462d2097492811f10c7619dab1469b31194a32b", + "packages/render/src/export.ts": "791963ea500bb6c08af8def6605b1366b5afc887796862f01b3ee76465dbfab2", + "packages/render/src/figure.ts": "4f994cc394859027e4986635bffc1b45144a01140e19a1ce6b7b5748fa58bbd7", + "packages/render/src/model-view.ts": "8a2c575c8c1a2f09770fb4cfdbe6718121a66c4fe8b32c97f7b2d88c9f7a57fc", + "packages/render/src/scene-export.ts": "f5ba1250e1fe5e6c952ada3bc501979e4f9b8a8a0506a62a6e4cebdaf256a217", + "packages/render/src/taste-policies.ts": "9a6b5519ea51c8560b6fa33e6582cdc99ac3b6a19e69387fbb8e2a284d2058d9", + "packages/render/src/taste-selection.ts": "0d1d9477176d8da9f15c4f33bc8dc9d057384abd0d9cd13862f48e410fe2e897", + "packages/render/src/taste.ts": "4ae78ea584e10525d66dd6df685205a3bd6d7e635da531475e84a95262067893", + "profiles/library-formation.ss": "5b124cfda09b5d2d950481ae8f1e6143a135f7f1c0ce0328fd3de5407e732c1f", + "project.sysml": "a1df4b8bd19d07011e1bf7d54b46ef855c66029ac543424743c7e388146bd9b1", + "scenarios/project-formation/func.ss": "b3943c92bf48daac75b456e5a994aedba099226ba6aa232e937dae57e53e1350" + }, + "receipt": { + "attribution": { + "copyright": [ + "2026 hardenedlinux Linux Team and Contributors", + "2014 Indian Type Foundry (info@indiantypefoundry.com)" + ], + "license": "LGPL-2.1-or-later AND OFL-1.1" + }, + "observation": { + "canvas": { + "x": 0, + "y": 0, + "width": 1200, + "height": 995 + }, + "subjects": [ + { + "id": "project", + "role": "default", + "x": 325.8243408203125, + "y": 131.19061279296875, + "width": 550.8900756835938, + "height": 372.9342346191406 + }, + { + "id": "library", + "role": "default", + "x": 438, + "y": 607.580078125, + "width": 215.15960693359375, + "height": 85.39031982421875 + }, + { + "id": "project.profile", + "role": "default", + "owner": "project", + "x": 392.9620361328125, + "y": 407, + "width": 229.5379638671875, + "height": 83.45523071289062 + }, + { + "id": "project.scenario", + "role": "pending", + "owner": "project", + "x": 460.104736328125, + "y": 210.42356872558594, + "width": 190.99334716796875, + "height": 118.46678161621094 + }, + { + "id": "project.inputs", + "role": "default", + "owner": "project", + "x": 642.5, + "y": 406.65966796875, + "width": 208.4544677734375, + "height": 84.07254028320312 + } + ], + "relations": [ + "(project.profile -> library)[0]", + "project.(scenario -> profile)[0]", + "(project.scenario -> library)[0]", + "project.(scenario -> inputs)[0]" + ], + "headings": [ + { + "role": "title", + "x": 20, + "y": 20, + "width": 1160, + "height": 48 + }, + { + "role": "question", + "x": 20, + "y": 68, + "width": 1160, + "height": 34 + }, + { + "role": "answer", + "x": 20, + "y": 727, + "width": 1160, + "height": 31 + }, + { + "role": "note", + "x": 20, + "y": 762, + "width": 1160, + "height": 27 + }, + { + "role": "note", + "x": 20, + "y": 793, + "width": 1160, + "height": 27 + }, + { + "role": "note", + "x": 20, + "y": 824, + "width": 1160, + "height": 27 + }, + { + "role": "note", + "x": 20, + "y": 855, + "width": 1160, + "height": 27 + }, + { + "role": "note", + "x": 20, + "y": 886, + "width": 1160, + "height": 27 + }, + { + "role": "note", + "x": 20, + "y": 917, + "width": 1160, + "height": 27 + }, + { + "role": "note", + "x": 20, + "y": 948, + "width": 1160, + "height": 27 + } + ] + }, + "canvas": { + "background": "rgb(250, 247, 238)", + "transparent": false + }, + "readability": { + "minimumTextSize": 12, + "samples": 25 + }, + "inputSHA256": "61e2bcfba40751bdda1aca5f6a0b1c60d81d8b494a7aa6f1923e2d5e44f0f506", + "scenes": [ + { + "inputSHA256": "ec0db347189261f683946d7806bed97a456696489ad5e88d9cec707b75c7343b", + "layoutSHA256": "df6cd03806de3f3fab65a4293e9106776c110733848c1022805fec70d12c9801", + "nodes": 5, + "edges": 4, + "milliseconds": 154.13745900000004 + } + ], + "svgSHA256": [ + "924ac65275013962826ba957d34990934c5ccb88eae3b20cb2c022dc28bb32f7", + "aacf3583fb4bc7f7539e6b6055d1e11db3d2e23a3df8fa7a2be64c7875e6a8be" + ], + "composedHTMLSHA256": "6fc68e3dfbac970cc39e5a34e02712f27d4a5c8ec184a50d283d487bf5ee22b0", + "dependencies": { + "@fontsource/inter": "5.3.0", + "@fontsource/kalam": "5.3.0", + "@terrastruct/d2": "0.1.33", + "@xyflow/system": "0.0.83", + "elkjs": "0.12.1", + "parse5": "8.0.1", + "roughjs": "4.6.6", + "valibot": "1.2.0", + "web-worker": "1.5.0" + }, + "regionSHA256": {}, + "htmlSHA256": "6427b0885d8dc48109cb6bad83491e894eeb28441e434d7a79c98767243fc82e", + "drawing": "roughjs@4.6.6", + "routing": "elkjs@0.12.1", + "assetSHA256": { + "@fontsource/kalam/files/kalam-latin-400-normal.woff2": "954410601a823f37e219f7930b7446f86afa15621326a7078d56fb9c910135cb", + "@fontsource/kalam/files/kalam-latin-700-normal.woff2": "252063af6ade8b9a744cde4ddad0fc21ea53b8ba711eed121a0c2e8610ea9c93" + }, + "pngSHA256": "5c236bc5935cb9d57bdaa52098980b9cdc480084939ec379217efc9230588837", + "browser": "156.0.8078.4", + "width": 1800, + "height": 1493, + "scale": 1.5, + "bounds": { + "model": { + "x": 20, + "y": 110, + "width": 1160, + "height": 603 + } + } + }, + "taste": { + "inputSHA256": "61e2bcfba40751bdda1aca5f6a0b1c60d81d8b494a7aa6f1923e2d5e44f0f506", + "htmlSHA256": "6427b0885d8dc48109cb6bad83491e894eeb28441e434d7a79c98767243fc82e", + "pngSHA256": "5c236bc5935cb9d57bdaa52098980b9cdc480084939ec379217efc9230588837", + "design": { + "audience": "Source review", + "medium": "README component view", + "message": "Library publishes; Profile selects; Scenario binds actual inputs.", + "questionRefs": [ + "publication" + ], + "requiredSubjects": [ + "library", + "project", + "project.profile", + "project.scenario", + "project.inputs" + ], + "requiredRelations": [ + "(project.profile -> library)[0]", + "project.(scenario -> profile)[0]", + "(project.scenario -> library)[0]", + "project.(scenario -> inputs)[0]" + ], + "focalSubjects": [ + "project.scenario" + ] + }, + "sourceSHA256": { + "docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture.d2": "865851b9efa36c9ddadd9d4e5284b4214564d6f57e3e6e85930709a92f7a96fc", + "docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices.d2": "394c73914d695c9990f1f3fa85d2a2964c6838c7380f0cc6f0d60b912eb03481", + "library/project-organization/objects.ss": "f660d3d90a55a9d7deff8782194dbdc952e85ecfd52463577e8ab1be9905a6b6", + "packages/render/examples/attribution.ts": "58f7914284a69c4ce42db61ec24c06cf9194232ed3402fc7ae12e3ded4187892", + "packages/render/examples/design-case.ts": "70c1e9886e11e867023ac72db3bc0c7e0c62bf3ea3d52db334a9251d63a108ea", + "packages/render/examples/design-choices.ts": "c549f116af5faded85ae887590bfd123cc5db298302cab0c0f8ad12c45680536", + "packages/render/package.json": "cdb4f5d8639d7fdd389973db286612d5db57b42c873fdc3a2316dd1ac9f0c371", + "packages/render/src/design.ts": "5cf15ef5faa1b968800e1c08822e473b2d2fd1f86c921aad9d2e1f9a75f4fc1a", + "packages/render/src/diagram.ts": "c0e831979970fc90c418820e4462d2097492811f10c7619dab1469b31194a32b", + "packages/render/src/export.ts": "791963ea500bb6c08af8def6605b1366b5afc887796862f01b3ee76465dbfab2", + "packages/render/src/figure.ts": "4f994cc394859027e4986635bffc1b45144a01140e19a1ce6b7b5748fa58bbd7", + "packages/render/src/model-view.ts": "8a2c575c8c1a2f09770fb4cfdbe6718121a66c4fe8b32c97f7b2d88c9f7a57fc", + "packages/render/src/scene-export.ts": "f5ba1250e1fe5e6c952ada3bc501979e4f9b8a8a0506a62a6e4cebdaf256a217", + "packages/render/src/taste-policies.ts": "9a6b5519ea51c8560b6fa33e6582cdc99ac3b6a19e69387fbb8e2a284d2058d9", + "packages/render/src/taste-selection.ts": "0d1d9477176d8da9f15c4f33bc8dc9d057384abd0d9cd13862f48e410fe2e897", + "packages/render/src/taste.ts": "4ae78ea584e10525d66dd6df685205a3bd6d7e635da531475e84a95262067893", + "profiles/library-formation.ss": "5b124cfda09b5d2d950481ae8f1e6143a135f7f1c0ce0328fd3de5407e732c1f", + "project.sysml": "a1df4b8bd19d07011e1bf7d54b46ef855c66029ac543424743c7e388146bd9b1", + "scenarios/project-formation/func.ss": "b3943c92bf48daac75b456e5a994aedba099226ba6aa232e937dae57e53e1350" + }, + "selection": { + "bindingSHA256": "14f7b16a9b7155c88ae130c3a4619f8b191a43d80adcb77b23e58355b5e57f42", + "decisions": [ + { + "rationale": "1 subjects are explicitly linked to the selected Questions.", + "questionRefs": [ + "publication" + ], + "subjectRefs": [ + "library" + ], + "evidenceRefs": [], + "changes": { + "design": { + "audience": "Source review", + "medium": "README component view", + "message": "Library publishes; Profile selects; Scenario binds actual inputs.", + "questionRefs": [ + "publication" + ], + "requiredSubjects": [ + "library", + "project", + "project.profile", + "project.scenario", + "project.inputs" + ], + "requiredRelations": [ + "(project.profile -> library)[0]", + "project.(scenario -> profile)[0]", + "(project.scenario -> library)[0]", + "project.(scenario -> inputs)[0]" + ], + "focalSubjects": [ + "library" + ] + } + }, + "rule": "question-focus" + }, + { + "rationale": "Selected source projections contain missing; their subjects take visual priority without changing model facts.", + "questionRefs": [ + "publication" + ], + "subjectRefs": [ + "project.scenario" + ], + "evidenceRefs": [ + "capture-gap" + ], + "changes": { + "design": { + "audience": "Source review", + "medium": "README component view", + "message": "Library publishes; Profile selects; Scenario binds actual inputs.", + "questionRefs": [ + "publication" + ], + "requiredSubjects": [ + "library", + "project", + "project.profile", + "project.scenario", + "project.inputs" + ], + "requiredRelations": [ + "(project.profile -> library)[0]", + "project.(scenario -> profile)[0]", + "(project.scenario -> library)[0]", + "project.(scenario -> inputs)[0]" + ], + "focalSubjects": [ + "project.scenario" + ] + } + }, + "rule": "evidence-focus" + }, + { + "rationale": "Retain 5 displayed subjects, including required references and their declared containers.", + "questionRefs": [ + "publication" + ], + "subjectRefs": [ + "library", + "project", + "project.profile", + "project.scenario", + "project.inputs" + ], + "evidenceRefs": [], + "changes": { + "presentation": { + "graph": { + "id": "ownership", + "children": [ + { + "id": "library" + }, + { + "id": "project", + "children": [ + { + "id": "project.profile" + }, + { + "id": "project.scenario" + }, + { + "id": "project.inputs" + } + ] + } + ], + "layoutOptions": {} + }, + "roles": {}, + "icons": { + "library": "library", + "project.profile": "selection", + "project.scenario": "capture", + "project.inputs": "document" + }, + "edgeLabels": true + } + }, + "rule": "question-scope" + }, + { + "rationale": "Focal subjects have 0 incoming and 3 outgoing relationships; select ELK DOWN.", + "questionRefs": [ + "publication" + ], + "subjectRefs": [ + "project.scenario" + ], + "evidenceRefs": [], + "changes": { + "presentation": { + "graph": { + "id": "ownership", + "children": [ + { + "id": "library" + }, + { + "id": "project", + "children": [ + { + "id": "project.profile" + }, + { + "id": "project.scenario" + }, + { + "id": "project.inputs" + } + ] + } + ], + "layoutOptions": { + "elk.direction": "DOWN" + } + }, + "roles": {}, + "icons": { + "library": "library", + "project.profile": "selection", + "project.scenario": "capture", + "project.inputs": "document" + }, + "edgeLabels": true + } + }, + "rule": "dependency-layout" + }, + { + "rationale": "Selected focal and source-gap roles use the chosen theme; no evidence state is promoted to approval.", + "questionRefs": [ + "publication" + ], + "subjectRefs": [ + "project.scenario" + ], + "evidenceRefs": [ + "capture-gap" + ], + "changes": { + "presentation": { + "graph": { + "id": "ownership", + "children": [ + { + "id": "library" + }, + { + "id": "project", + "children": [ + { + "id": "project.profile" + }, + { + "id": "project.scenario" + }, + { + "id": "project.inputs" + } + ] + } + ], + "layoutOptions": { + "elk.direction": "DOWN" + } + }, + "roles": { + "project.scenario": "pending" + }, + "icons": { + "library": "library", + "project.profile": "selection", + "project.scenario": "capture", + "project.inputs": "document" + }, + "edgeLabels": true + } + }, + "rule": "visual-hierarchy" + } + ] + }, + "judgments": [ + { + "rule": "question-focus", + "rationale": "Choose emphasis from selected Question/model bindings.", + "notes": [] + }, + { + "rule": "evidence-focus", + "rationale": "Expose selected counterevidence, conflict, stale or missing source observations.", + "notes": [] + }, + { + "rule": "question-scope", + "rationale": "Choose the view scope from Questions while preserving all required references.", + "notes": [] + }, + { + "rule": "dependency-layout", + "rationale": "Orient the selected relationship view around its focal dependency position.", + "notes": [] + }, + { + "rule": "visual-hierarchy", + "rationale": "Give focal subjects and selected source gaps distinct visual roles.", + "notes": [] + }, + { + "rule": "minimum-text-size", + "rationale": "Read SVG text at the selected logical display size.", + "parameters": { + "minimum": 12 + }, + "notes": [ + { + "kind": "observation", + "message": "Observed minimum 12.00 CSS px; selected preference 12 CSS px.", + "questionRefs": [ + "publication" + ], + "subjectRefs": [] + } + ] + }, + { + "rule": "focal-budget", + "rationale": "Reserve emphasis for the selected reader question.", + "parameters": { + "maximum": 2 + }, + "notes": [ + { + "kind": "observation", + "message": "1 declared focal subjects; selected preference at most 2.", + "questionRefs": [ + "publication" + ], + "subjectRefs": [ + "project.scenario" + ] + } + ] + } + ] + } +} \ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-source-gap.json.license b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-source-gap.json.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-source-gap.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-source-gap.png b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-source-gap.png new file mode 100644 index 0000000..75a783f Binary files /dev/null and b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-source-gap.png differ diff --git a/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-source-gap.png.license b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-source-gap.png.license new file mode 100644 index 0000000..2b7acd7 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-source-gap.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors + +SPDX-License-Identifier: LGPL-2.1-or-later diff --git a/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-source-gap.svg b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-source-gap.svg new file mode 100644 index 0000000..cb702a1 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices-source-gap.svg @@ -0,0 +1,82 @@ + +{"renderer":{"package":"@deterministic-engineering/render","version":"1.0.0","icons":{"capture":"a647d42aa11f4e5e85d0bbf66f483f57f3c4ba3a9536362ed0eaaaae10a89cee","decision":"3535642a5b613372c3fd374151ec90aafa19b64b2d33d10b19162cad07a35c7a","document":"0bf9674a401262da8a646305cab00006954721c07765b9962e0dee1c31d560f7","evidence":"0a91b169aaa644829a054cbb94194efffaf4298f2b6f8fa8c6ec2b7b413a1766","library":"df474fa36a74016b79236fff58a980a8c18c682d1866211776e349a0eb4b2979","model":"0cfd1f9ed3873f556ace725a7b6a251ebe75d7d976567699276f34df36b2443b","obligation":"e76f4d34a7190400446c89e4e7d187762b885808a64a00c99455599d902570c5","pending":"cca7589bc3b1dcdebacb867c6836c6fc166257f05823555a268354ff9bfac00c","question":"dbf231e1568dc37189d5674d73c4bfc58a17eb8ada579b3f03bf2813d33c56f4","reference":"3814c570f79ab294252c36530de464c9364814b797afb862d9c62e728a8660fc","selection":"82b4ab6faf195fea0a891c35268e61c186e93e7c6a9d7967a4f6a73dbf25ae7f"}},"design":{"audience":"Source review","medium":"README component view","message":"Library publishes; Profile selects; Scenario binds actual inputs.","questionRefs":["publication"],"requiredSubjects":["library","project","project.profile","project.scenario","project.inputs"],"requiredRelations":["(project.profile -> library)[0]","project.(scenario -> profile)[0]","(project.scenario -> library)[0]","project.(scenario -> inputs)[0]"],"focalSubjects":["project.scenario"]},"evidence":[{"sourceRef":"capture-gap","excerpt":"status: 'capture-blocked","state":"missing","subjectRefs":["project.scenario"],"relationRefs":[]}],"taste":{"bindingSHA256":"14f7b16a9b7155c88ae130c3a4619f8b191a43d80adcb77b23e58355b5e57f42","decisions":[{"rationale":"1 subjects are explicitly linked to the selected Questions.","questionRefs":["publication"],"subjectRefs":["library"],"evidenceRefs":[],"changes":{"design":{"audience":"Source review","medium":"README component view","message":"Library publishes; Profile selects; Scenario binds actual inputs.","questionRefs":["publication"],"requiredSubjects":["library","project","project.profile","project.scenario","project.inputs"],"requiredRelations":["(project.profile -> library)[0]","project.(scenario -> profile)[0]","(project.scenario -> library)[0]","project.(scenario -> inputs)[0]"],"focalSubjects":["library"]}},"rule":"question-focus"},{"rationale":"Selected source projections contain missing; their subjects take visual priority without changing model facts.","questionRefs":["publication"],"subjectRefs":["project.scenario"],"evidenceRefs":["capture-gap"],"changes":{"design":{"audience":"Source review","medium":"README component view","message":"Library publishes; Profile selects; Scenario binds actual inputs.","questionRefs":["publication"],"requiredSubjects":["library","project","project.profile","project.scenario","project.inputs"],"requiredRelations":["(project.profile -> library)[0]","project.(scenario -> profile)[0]","(project.scenario -> library)[0]","project.(scenario -> inputs)[0]"],"focalSubjects":["project.scenario"]}},"rule":"evidence-focus"},{"rationale":"Retain 5 displayed subjects, including required references and their declared containers.","questionRefs":["publication"],"subjectRefs":["library","project","project.profile","project.scenario","project.inputs"],"evidenceRefs":[],"changes":{"presentation":{"graph":{"id":"ownership","children":[{"id":"library"},{"id":"project","children":[{"id":"project.profile"},{"id":"project.scenario"},{"id":"project.inputs"}]}],"layoutOptions":{}},"roles":{},"icons":{"library":"library","project.profile":"selection","project.scenario":"capture","project.inputs":"document"},"edgeLabels":true}},"rule":"question-scope"},{"rationale":"Focal subjects have 0 incoming and 3 outgoing relationships; select ELK DOWN.","questionRefs":["publication"],"subjectRefs":["project.scenario"],"evidenceRefs":[],"changes":{"presentation":{"graph":{"id":"ownership","children":[{"id":"library"},{"id":"project","children":[{"id":"project.profile"},{"id":"project.scenario"},{"id":"project.inputs"}]}],"layoutOptions":{"elk.direction":"DOWN"}},"roles":{},"icons":{"library":"library","project.profile":"selection","project.scenario":"capture","project.inputs":"document"},"edgeLabels":true}},"rule":"dependency-layout"},{"rationale":"Selected focal and source-gap roles use the chosen theme; no evidence state is promoted to approval.","questionRefs":["publication"],"subjectRefs":["project.scenario"],"evidenceRefs":["capture-gap"],"changes":{"presentation":{"graph":{"id":"ownership","children":[{"id":"library"},{"id":"project","children":[{"id":"project.profile"},{"id":"project.scenario"},{"id":"project.inputs"}]}],"layoutOptions":{"elk.direction":"DOWN"}},"roles":{"project.scenario":"pending"},"icons":{"library":"library","project.profile":"selection","project.scenario":"capture","project.inputs":"document"},"edgeLabels":true}},"rule":"visual-hierarchy"}]},"presentation":{"graph":{"id":"ownership","children":[{"id":"library"},{"id":"project","children":[{"id":"project.profile"},{"id":"project.scenario"},{"id":"project.inputs"}]}],"layoutOptions":{"elk.direction":"DOWN"}},"roles":{"project.scenario":"pending"},"icons":{"library":"library","project.profile":"selection","project.scenario":"capture","project.inputs":"document"},"edgeLabels":true},"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":"61e2bcfba40751bdda1aca5f6a0b1c60d81d8b494a7aa6f1923e2d5e44f0f506","model":{"subjects":[{"id":"library","type":"rectangle","level":1,"label":"Library\nDefinitions and contracts"},{"id":"project","type":"rectangle","level":1,"label":"Project"},{"id":"project.profile","type":"rectangle","level":2,"label":"Profile\nSelects published definitions"},{"id":"project.scenario","type":"rectangle","level":2,"label":"Scenario\nBinds project inputs"},{"id":"project.inputs","type":"rectangle","level":2,"label":"Repository inputs\nModels / Org / decisions"}],"relations":[{"id":"(project.profile -> library)[0]","src":"project.profile","dst":"library","label":"selects","srcArrow":"none","dstArrow":"triangle"},{"id":"project.(scenario -> profile)[0]","src":"project.scenario","dst":"project.profile","label":"binds","srcArrow":"none","dstArrow":"triangle"},{"id":"(project.scenario -> library)[0]","src":"project.scenario","dst":"library","label":"references definitions","srcArrow":"none","dstArrow":"triangle"},{"id":"project.(scenario -> inputs)[0]","src":"project.scenario","dst":"project.inputs","label":"binds actual inputs","srcArrow":"none","dstArrow":"triangle"}]},"view":{"source":"docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices.d2","title":"Library / Profile / Scenario: Question-driven design","purpose":"architecture","kind":"design-comparison","question":{"subjectRefs":["library"],"ref":"publication","text":"Who owns the reusable definitions?","focusRefs":["library","profile","model"]},"basis":{"captureRef":"design-candidate:library-design-taste","modelRefs":["project.sysml"],"obligationRefs":["docs/10-19-design/10-architecture/10.145-design-taste-public-contracts.org"],"evidenceRefs":["capture-gap"]}},"questions":[{"subjectRefs":["library"],"ref":"publication","text":"Who owns the reusable definitions?","focusRefs":["library","profile","model"]}],"references":{"capture-gap":"scenarios/project-formation/func.ss","case":"docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture.d2","library":"library/project-organization/objects.ss","model":"project.sysml","profile":"profiles/library-formation.ss","scenario":"scenarios/project-formation/func.ss","source":"docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices.d2"},"sourceSHA256":{"docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture.d2":"865851b9efa36c9ddadd9d4e5284b4214564d6f57e3e6e85930709a92f7a96fc","docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices.d2":"394c73914d695c9990f1f3fa85d2a2964c6838c7380f0cc6f0d60b912eb03481","library/project-organization/objects.ss":"f660d3d90a55a9d7deff8782194dbdc952e85ecfd52463577e8ab1be9905a6b6","packages/render/examples/attribution.ts":"58f7914284a69c4ce42db61ec24c06cf9194232ed3402fc7ae12e3ded4187892","packages/render/examples/design-case.ts":"70c1e9886e11e867023ac72db3bc0c7e0c62bf3ea3d52db334a9251d63a108ea","packages/render/examples/design-choices.ts":"c549f116af5faded85ae887590bfd123cc5db298302cab0c0f8ad12c45680536","packages/render/package.json":"cdb4f5d8639d7fdd389973db286612d5db57b42c873fdc3a2316dd1ac9f0c371","packages/render/src/design.ts":"5cf15ef5faa1b968800e1c08822e473b2d2fd1f86c921aad9d2e1f9a75f4fc1a","packages/render/src/diagram.ts":"c0e831979970fc90c418820e4462d2097492811f10c7619dab1469b31194a32b","packages/render/src/export.ts":"791963ea500bb6c08af8def6605b1366b5afc887796862f01b3ee76465dbfab2","packages/render/src/figure.ts":"4f994cc394859027e4986635bffc1b45144a01140e19a1ce6b7b5748fa58bbd7","packages/render/src/model-view.ts":"8a2c575c8c1a2f09770fb4cfdbe6718121a66c4fe8b32c97f7b2d88c9f7a57fc","packages/render/src/scene-export.ts":"f5ba1250e1fe5e6c952ada3bc501979e4f9b8a8a0506a62a6e4cebdaf256a217","packages/render/src/taste-policies.ts":"9a6b5519ea51c8560b6fa33e6582cdc99ac3b6a19e69387fbb8e2a284d2058d9","packages/render/src/taste-selection.ts":"0d1d9477176d8da9f15c4f33bc8dc9d057384abd0d9cd13862f48e410fe2e897","packages/render/src/taste.ts":"4ae78ea584e10525d66dd6df685205a3bd6d7e635da531475e84a95262067893","profiles/library-formation.ss":"5b124cfda09b5d2d950481ae8f1e6143a135f7f1c0ce0328fd3de5407e732c1f","project.sysml":"a1df4b8bd19d07011e1bf7d54b46ef855c66029ac543424743c7e388146bd9b1","scenarios/project-formation/func.ss":"b3943c92bf48daac75b456e5a994aedba099226ba6aa232e937dae57e53e1350"},"rendered":{"observation":{"canvas":{"x":0,"y":0,"width":1200,"height":995},"subjects":[{"id":"project","role":"default","x":325.8243408203125,"y":131.19061279296875,"width":550.8900756835938,"height":372.9342346191406},{"id":"library","role":"default","x":438,"y":607.580078125,"width":215.15960693359375,"height":85.39031982421875},{"id":"project.profile","role":"default","owner":"project","x":392.9620361328125,"y":407,"width":229.5379638671875,"height":83.45523071289062},{"id":"project.scenario","role":"pending","owner":"project","x":460.104736328125,"y":210.42356872558594,"width":190.99334716796875,"height":118.46678161621094},{"id":"project.inputs","role":"default","owner":"project","x":642.5,"y":406.65966796875,"width":208.4544677734375,"height":84.07254028320312}],"relations":["(project.profile -> library)[0]","project.(scenario -> profile)[0]","(project.scenario -> library)[0]","project.(scenario -> inputs)[0]"],"headings":[{"role":"title","x":20,"y":20,"width":1160,"height":48},{"role":"question","x":20,"y":68,"width":1160,"height":34},{"role":"answer","x":20,"y":727,"width":1160,"height":31},{"role":"note","x":20,"y":762,"width":1160,"height":27},{"role":"note","x":20,"y":793,"width":1160,"height":27},{"role":"note","x":20,"y":824,"width":1160,"height":27},{"role":"note","x":20,"y":855,"width":1160,"height":27},{"role":"note","x":20,"y":886,"width":1160,"height":27},{"role":"note","x":20,"y":917,"width":1160,"height":27},{"role":"note","x":20,"y":948,"width":1160,"height":27}]},"readability":{"minimumTextSize":12,"samples":25},"bounds":{"model":{"x":20,"y":110,"width":1160,"height":603}}}}Library / Profile / Scenario: Question-driven design?Who owns the reusable definitions?{"graph":{"id":"ownership","children":[{"id":"library"},{"id":"project","children":[{"id":"project.profile"},{"id":"project.scenario"},{"id":"project.inputs"}]}],"layoutOptions":{"elk.spacing.nodeNode":"24","elk.layered.spacing.nodeNodeBetweenLayers":"36","elk.direction":"DOWN"},"edges":[{"id":"(project.profile -> library)[0]","sources":["project.profile"],"targets":["library"]},{"id":"project.(scenario -> profile)[0]","sources":["project.scenario"],"targets":["project.profile"]},{"id":"(project.scenario -> library)[0]","sources":["project.scenario"],"targets":["library"]},{"id":"project.(scenario -> inputs)[0]","sources":["project.scenario"],"targets":["project.inputs"]}]},"marker":"arrow-c322333a681a"}Projectselectsbindsreferences definitionsbinds actual inputsLibraryDefinitions and contractsProfileSelects published definitionsScenarioBinds project inputsmissing · capture-gapRepository inputsModels / Org / decisionsSource review1 subjects are explicitly linked to the selected Questions.Selected source projections contain missing; their subjects take visual priority without changing model facts.Retain 5 displayed subjects, including required references and their declared containers.Focal subjects have 0 incoming and 3 outgoing relationships; select ELK DOWN.Selected focal and source-gap roles use the chosen theme; no evidence state is promoted to approval.Selected source observations: missingCurrent repository source observations only · no C/Q/R issued \ No newline at end of file diff --git a/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices.d2 b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices.d2 new file mode 100644 index 0000000..62f8a79 --- /dev/null +++ b/docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices.d2 @@ -0,0 +1,239 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + +# Design choices over the current Library Case. Arrows point to dependencies, not execution order. +vars: {d2-config: {data: {figure: |json +{ + "title": "Library / Profile / Scenario: Question-driven design", + "purpose": "architecture", + "kind": "design-comparison", + "language": "en", + "width": 1200, + "primary": "publication", + "questions": [ + { + "ref": "publication", + "text": "Who owns the reusable definitions?", + "focusRefs": [ + "library", + "profile", + "model" + ], + "subjectRefs": [ + "library" + ] + }, + { + "ref": "binding", + "text": "Who binds the actual project inputs?", + "focusRefs": [ + "scenario", + "model" + ], + "subjectRefs": [ + "project.scenario" + ] + } + ], + "references": { + "source": "docs/90-99-views/90-architecture-views/90.138-library-design-taste-choices.d2", + "model": "project.sysml", + "case": "docs/90-99-views/90-architecture-views/90.132-library-profile-scenario-architecture.d2", + "library": "library/project-organization/objects.ss", + "profile": "profiles/library-formation.ss", + "scenario": "scenarios/project-formation/func.ss", + "capture-gap": "scenarios/project-formation/func.ss" + }, + "basis": { + "captureRef": "design-candidate:library-design-taste", + "modelRefs": [ + "project.sysml" + ], + "obligationRefs": [ + "docs/10-19-design/10-architecture/10.145-design-taste-public-contracts.org" + ], + "evidenceRefs": [ + "capture-gap" + ] + }, + "copy": { + "status": "Current repository source observations only \u00b7 no C/Q/R issued", + "comparison-title": "One Taste pipeline. Different Questions and source observations.", + "comparison-note": "Model facts and required references stay fixed; Taste selects scope, hierarchy and ELK preferences.", + "sources-label": "Selected source observations" + }, + "design": { + "audience": "Library adopter", + "medium": "README component view", + "message": "Library publishes; Profile selects; Scenario binds actual inputs.", + "questionRefs": [ + "publication" + ], + "requiredSubjects": [ + "library", + "project", + "project.profile", + "project.scenario", + "project.inputs" + ], + "requiredRelations": [ + "(project.profile -> library)[0]", + "project.(scenario -> profile)[0]", + "(project.scenario -> library)[0]", + "project.(scenario -> inputs)[0]" + ], + "focalSubjects": [] + }, + "themes": [ + "sketchbook", + "compact" + ], + "icons": [ + "engineering" + ], + "presentation": { + "graph": { + "id": "ownership", + "children": [ + { + "id": "library" + }, + { + "id": "project", + "children": [ + { + "id": "project.profile" + }, + { + "id": "project.scenario" + }, + { + "id": "project.inputs" + } + ] + } + ] + }, + "icons": { + "library": "library", + "project.profile": "selection", + "project.scenario": "capture", + "project.inputs": "document" + } + }, + "variants": [ + { + "name": "adopter", + "questionRefs": [ + "publication" + ], + "evidenceRefs": [], + "design": { + "audience": "Library adopter", + "medium": "README component view", + "message": "Library publishes; Profile selects; Scenario binds actual inputs.", + "questionRefs": [ + "publication" + ], + "requiredSubjects": [ + "library", + "project", + "project.profile", + "project.scenario", + "project.inputs" + ], + "requiredRelations": [ + "(project.profile -> library)[0]", + "project.(scenario -> profile)[0]", + "(project.scenario -> library)[0]", + "project.(scenario -> inputs)[0]" + ], + "focalSubjects": [] + } + }, + { + "name": "maintainer", + "questionRefs": [ + "binding" + ], + "evidenceRefs": [], + "design": { + "audience": "Project maintainer", + "medium": "README component view", + "message": "Library publishes; Profile selects; Scenario binds actual inputs.", + "questionRefs": [ + "binding" + ], + "requiredSubjects": [ + "library", + "project", + "project.profile", + "project.scenario", + "project.inputs" + ], + "requiredRelations": [ + "(project.profile -> library)[0]", + "project.(scenario -> profile)[0]", + "(project.scenario -> library)[0]", + "project.(scenario -> inputs)[0]" + ], + "focalSubjects": [] + } + }, + { + "name": "source-gap", + "questionRefs": [ + "publication" + ], + "evidenceRefs": [ + "capture-gap" + ], + "design": { + "audience": "Source review", + "medium": "README component view", + "message": "Library publishes; Profile selects; Scenario binds actual inputs.", + "questionRefs": [ + "publication" + ], + "requiredSubjects": [ + "library", + "project", + "project.profile", + "project.scenario", + "project.inputs" + ], + "requiredRelations": [ + "(project.profile -> library)[0]", + "project.(scenario -> profile)[0]", + "(project.scenario -> library)[0]", + "project.(scenario -> inputs)[0]" + ], + "focalSubjects": [] + } + } + ], + "evidence": [ + { + "sourceRef": "capture-gap", + "excerpt": "status: 'capture-blocked", + "state": "missing", + "subjectRefs": [ + "project.scenario" + ], + "relationRefs": [] + } + ] +} +| +}}} +library: "Library\nDefinitions and contracts" +project: Project { + profile: "Profile\nSelects published definitions" + scenario: "Scenario\nBinds project inputs" + inputs: "Repository inputs\nModels / Org / decisions" +} +project.profile -> library: selects +project.scenario -> project.profile: binds +project.scenario -> library: references definitions +project.scenario -> project.inputs: binds actual inputs diff --git a/docs/90-99-views/90-architecture-views/90.14-gateway-three-changes.d2 b/docs/90-99-views/90-architecture-views/90.14-gateway-three-changes.d2 index 144654c..d2a3419 100644 --- a/docs/90-99-views/90-architecture-views/90.14-gateway-three-changes.d2 +++ b/docs/90-99-views/90-architecture-views/90.14-gateway-three-changes.d2 @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 hardenedlinux Linux Team and Contributors +# +# SPDX-License-Identifier: LGPL-2.1-or-later + # org-target: docs/20-29-cases/20-gateway/20.04-query-and-change-fixtures.org::#three-change-walkthroughs # Three independent resets from hypothetical B0, not cumulative changes or executed work. direction: down diff --git a/docs/90-99-views/90-architecture-views/90.14-gateway-three-changes.svg b/docs/90-99-views/90-architecture-views/90.14-gateway-three-changes.svg index 0b11759..cfac24a 100644 --- a/docs/90-99-views/90-architecture-views/90.14-gateway-three-changes.svg +++ b/docs/90-99-views/90-architecture-views/90.14-gateway-three-changes.svg @@ -1,4 +1,11 @@ -