From 48bd213cda039946a54ce7f2a5ea81e636121141 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 2 Jun 2026 08:11:52 +0000 Subject: [PATCH 1/8] chore(license): normalize SPDX headers to PMPL-1.0-or-later Source files are governed by PMPL-1.0-or-later per NOTICE; the root LICENSE and Cargo.toml license field intentionally remain MPL-2.0 as a compatibility shim for registries/tooling (documented in NOTICE and 0-AI-MANIFEST.a2ml). - Add missing SPDX headers: crates/lsm, crates/claude-client, MainActivity.kt, NativeLib.kt - Normalize stray MPL-2.0 / invalid MPL-2.0-or-later headers to PMPL-1.0-or-later: CONTRIBUTING.adoc, CHANGELOG.md, docs/tech-debt doc header, and 4 workflow files - Leave historical audit findings (docs/*audit*, tech-debt finding table) unchanged as point-in-time records https://claude.ai/code/session_01Gu1JFCZHuBtBhAWPr4sMQw --- .github/workflows/cargo-audit.yml | 2 +- .github/workflows/hypatia-scan.yml | 2 +- .github/workflows/rust-ci.yml | 2 +- .github/workflows/workflow-linter.yml | 2 +- CHANGELOG.md | 2 +- CONTRIBUTING.adoc | 2 +- android/app/src/main/java/ai/neurophone/MainActivity.kt | 2 ++ android/app/src/main/java/ai/neurophone/NativeLib.kt | 2 ++ crates/claude-client/src/lib.rs | 4 ++++ crates/lsm/src/lib.rs | 4 ++++ docs/tech-debt-2026-05-26.md | 2 +- 11 files changed, 19 insertions(+), 7 deletions(-) diff --git a/.github/workflows/cargo-audit.yml b/.github/workflows/cargo-audit.yml index ca42f96..ae3236d 100644 --- a/.github/workflows/cargo-audit.yml +++ b/.github/workflows/cargo-audit.yml @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: MPL-2.0 +# SPDX-License-Identifier: PMPL-1.0-or-later # Prevention workflow - audits Rust dependencies for vulnerabilities name: Cargo Audit diff --git a/.github/workflows/hypatia-scan.yml b/.github/workflows/hypatia-scan.yml index 1d6417e..29f6f39 100644 --- a/.github/workflows/hypatia-scan.yml +++ b/.github/workflows/hypatia-scan.yml @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: MPL-2.0 +# SPDX-License-Identifier: PMPL-1.0-or-later # Thin wrapper around hyperpolymath/standards hypatia-scan-reusable.yml. # See standards#191 for the reusable's purpose and design. diff --git a/.github/workflows/rust-ci.yml b/.github/workflows/rust-ci.yml index 9ab8801..983c6d2 100644 --- a/.github/workflows/rust-ci.yml +++ b/.github/workflows/rust-ci.yml @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: MPL-2.0 +# SPDX-License-Identifier: PMPL-1.0-or-later # Rust CI — thin wrapper calling the shared estate reusable in # hyperpolymath/standards. Configure once, propagate everywhere. # See: docs/CI-REUSABLE-WORKFLOWS.adoc in standards. diff --git a/.github/workflows/workflow-linter.yml b/.github/workflows/workflow-linter.yml index 02b2e76..b5ba94d 100644 --- a/.github/workflows/workflow-linter.yml +++ b/.github/workflows/workflow-linter.yml @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: MPL-2.0 +# SPDX-License-Identifier: PMPL-1.0-or-later # Prevention workflow - validates all workflows have proper security config name: Workflow Security Linter diff --git a/CHANGELOG.md b/CHANGELOG.md index 2b432c7..94741e4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,5 @@ diff --git a/CONTRIBUTING.adoc b/CONTRIBUTING.adoc index a0f2f54..c73e96f 100644 --- a/CONTRIBUTING.adoc +++ b/CONTRIBUTING.adoc @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MPL-2.0-or-later +// SPDX-License-Identifier: PMPL-1.0-or-later = Contributing Guide == Getting Started diff --git a/android/app/src/main/java/ai/neurophone/MainActivity.kt b/android/app/src/main/java/ai/neurophone/MainActivity.kt index 0c07302..6df619e 100644 --- a/android/app/src/main/java/ai/neurophone/MainActivity.kt +++ b/android/app/src/main/java/ai/neurophone/MainActivity.kt @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-FileCopyrightText: 2025 Jonathan D.A. Jewell package ai.neurophone import android.Manifest diff --git a/android/app/src/main/java/ai/neurophone/NativeLib.kt b/android/app/src/main/java/ai/neurophone/NativeLib.kt index 454b605..9799c45 100644 --- a/android/app/src/main/java/ai/neurophone/NativeLib.kt +++ b/android/app/src/main/java/ai/neurophone/NativeLib.kt @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-FileCopyrightText: 2025 Jonathan D.A. Jewell package ai.neurophone /** diff --git a/crates/claude-client/src/lib.rs b/crates/claude-client/src/lib.rs index f289adc..a7cb36b 100644 --- a/crates/claude-client/src/lib.rs +++ b/crates/claude-client/src/lib.rs @@ -1,3 +1,7 @@ +// SPDX-License-Identifier: PMPL-1.0-or-later +// NeuroPhone - High-Assurance Hardware Orchestration +// Copyright (c) 2026 Jonathan D.A. Jewell + //! Claude API Client - Cloud Connection //! //! Connects to Claude (Anthropic's AI) for advanced reasoning diff --git a/crates/lsm/src/lib.rs b/crates/lsm/src/lib.rs index e65404e..6f1c84a 100644 --- a/crates/lsm/src/lib.rs +++ b/crates/lsm/src/lib.rs @@ -1,3 +1,7 @@ +// SPDX-License-Identifier: PMPL-1.0-or-later +// NeuroPhone - High-Assurance Hardware Orchestration +// Copyright (c) 2026 Jonathan D.A. Jewell + //! Liquid State Machine (LSM) - Spiking Neural Network Reservoir //! //! Implements a biologically-inspired spiking neural network using diff --git a/docs/tech-debt-2026-05-26.md b/docs/tech-debt-2026-05-26.md index 3517441..31f770a 100644 --- a/docs/tech-debt-2026-05-26.md +++ b/docs/tech-debt-2026-05-26.md @@ -1,5 +1,5 @@ From 4ddc702bbfb827e5aca03af3c1e7a1509bb98ea2 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 2 Jun 2026 08:19:03 +0000 Subject: [PATCH 2/8] chore(license): single PMPL-1.0-or-later statement per file; drop MPL split Make the licence statement uniform and remove all header debate so no file carries a competing/duplicate licence statement or stale MPL header-talk. MPL-2.0 now appears only inside the Palimpsest licence text itself (the permitted exception). - LICENSE: replace MPL-2.0 text with the Palimpsest (PMPL-1.0-or-later) text - Cargo.toml: license = PMPL-1.0-or-later (matches source headers + estate convention, e.g. stapeln.toml) - NOTICE: drop the MPL-vs-PMPL compatibility explanation; single PMPL notice - 0-AI-MANIFEST.a2ml: drop "unless platform requires MPL-2.0" caveat - docs/tech-debt-2026-05-26.md: correct stale MPL-2.0 licence findings to PMPL https://claude.ai/code/session_01Gu1JFCZHuBtBhAWPr4sMQw --- 0-AI-MANIFEST.a2ml | 2 +- Cargo.toml | 2 +- LICENSE | 495 ++++++++++------------------------- NOTICE | 15 +- docs/tech-debt-2026-05-26.md | 6 +- 5 files changed, 149 insertions(+), 371 deletions(-) diff --git a/0-AI-MANIFEST.a2ml b/0-AI-MANIFEST.a2ml index aadb4cf..b29e53f 100644 --- a/0-AI-MANIFEST.a2ml +++ b/0-AI-MANIFEST.a2ml @@ -43,7 +43,7 @@ Bot-specific instructions for: 1. **No SCM duplication** - Root must NOT contain .machine_readable/6a2/STATE.a2ml, .machine_readable/6a2/META.a2ml, etc. 2. **Single source of truth** - `.machine_readable/` is authoritative 3. **No stale metadata** - If root SCMs exist, they are OUT OF DATE -4. **License consistency** - All code PMPL-1.0-or-later unless platform requires MPL-2.0 +4. **License consistency** - All code PMPL-1.0-or-later 5. **Author attribution** - Always "Jonathan D.A. Jewell " ## REPOSITORY STRUCTURE diff --git a/Cargo.toml b/Cargo.toml index 0ab7d55..06a9d07 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,7 +14,7 @@ members = [ [workspace.package] version = "1.0.0" edition = "2021" -license = "MPL-2.0" +license = "PMPL-1.0-or-later" authors = ["Jonathan D.A. Jewell "] repository = "https://github.com/hyperpolymath/neurophone" diff --git a/LICENSE b/LICENSE index 2a8b960..f639385 100644 --- a/LICENSE +++ b/LICENSE @@ -1,375 +1,162 @@ -SPDX-License-Identifier: MPL-2.0 +SPDX-License-Identifier: PMPL-1.0-or-later +SPDX-FileCopyrightText: 2025 Palimpsest Stewardship Council + +================================================================================ +PALIMPSEST-MPL LICENSE VERSION 1.0 +================================================================================ -Mozilla Public License Version 2.0 -================================== +File-level copyleft with ethical use and quantum-safe provenance + +Based on Mozilla Public License 2.0 -1. Definitions --------------- +-------------------------------------------------------------------------------- +PREAMBLE +-------------------------------------------------------------------------------- -1.1. "Contributor" - means each individual or legal entity that creates, contributes to - the creation of, or owns Covered Software. +This License extends the Mozilla Public License 2.0 (MPL-2.0) with provisions +for ethical use, post-quantum cryptographic provenance, and emotional lineage +protection. The base MPL-2.0 terms apply except where explicitly modified by +the Exhibits below. + +Like a palimpsest manuscript where each layer builds upon what came before, +this license recognizes that creative works carry history, context, and meaning +that transcend mere code or text. + +-------------------------------------------------------------------------------- +SECTION 1: BASE LICENSE +-------------------------------------------------------------------------------- + +This License incorporates the full text of Mozilla Public License 2.0 by +reference. The complete MPL-2.0 text is available at: +https://www.mozilla.org/en-US/MPL/2.0/ + +All terms, conditions, and definitions from MPL-2.0 apply except where +explicitly modified by the Exhibits in this License. -1.2. "Contributor Version" - means the combination of the Contributions of others (if any) used - by a Contributor and that particular Contributor's Contribution. +-------------------------------------------------------------------------------- +SECTION 2: ADDITIONAL DEFINITIONS +-------------------------------------------------------------------------------- -1.3. "Contribution" - means Covered Software of a particular Contributor. +2.1. "Emotional Lineage" + means the narrative, cultural, symbolic, and contextual meaning embedded + in Covered Software, including but not limited to: protest traditions, + cultural heritage, trauma narratives, and community stories. + +2.2. "Provenance Metadata" + means cryptographically signed attribution information attached to or + associated with Covered Software, including author identities, timestamps, + modification history, and lineage references. + +2.3. "Non-Interpretive System" + means any automated system that processes Covered Software without + preserving or considering its Emotional Lineage, including but not + limited to: AI training pipelines, content aggregators, and automated + summarization tools. -1.4. "Covered Software" - means Source Code Form to which the initial Contributor has attached - the notice in Exhibit A, the Executable Form of such Source Code - Form, and Modifications of such Source Code Form, in each case - including portions thereof. +2.4. "Quantum-Safe Signature" + means a cryptographic signature using algorithms resistant to attacks + by quantum computers, as specified in Exhibit B. -1.5. "Incompatible With Secondary Licenses" - means +-------------------------------------------------------------------------------- +SECTION 3: ETHICAL USE REQUIREMENTS +-------------------------------------------------------------------------------- - (a) that the initial Contributor has attached the notice described - in Exhibit B to the Covered Software; or +In addition to the rights and obligations under MPL-2.0: - (b) that the Covered Software was made available under the terms of - version 1.1 or earlier of the License, but not also under the - terms of a Secondary License. +3.1. Emotional Lineage Preservation + You must make reasonable efforts to preserve and communicate the + Emotional Lineage of Covered Software when distributing or creating + derivative works. This includes maintaining narrative context, cultural + attributions, and symbolic meaning where documented. -1.6. "Executable Form" - means any form of the work other than Source Code Form. +3.2. Non-Interpretive System Notice + If You use Covered Software as input to a Non-Interpretive System, You + must: + (a) document such use in a publicly accessible manner; and + (b) not claim that outputs of such systems carry the Emotional Lineage + of the original work without explicit permission from Contributors. -1.7. "Larger Work" - means a work that combines Covered Software with other material, in - a separate file or files, that is not Covered Software. +3.3. Ethical Use Declaration + Commercial use of Covered Software requires acknowledgment that You have + read and understood Exhibit A (Ethical Use Guidelines) and agree to act + in good faith accordance with its principles. -1.8. "License" - means this document. +See Exhibit A for complete Ethical Use Guidelines. -1.9. "Licensable" - means having the right to grant, to the maximum extent possible, - whether at the time of the initial grant or subsequently, any and - all of the rights conveyed by this License. +-------------------------------------------------------------------------------- +SECTION 4: PROVENANCE REQUIREMENTS +-------------------------------------------------------------------------------- -1.10. "Modifications" - means any of the following: +4.1. Metadata Preservation + You must not strip, alter, or obscure Provenance Metadata from Covered + Software except where technically necessary and with clear documentation + of any changes. - (a) any file in Source Code Form that results from an addition to, - deletion from, or modification of the contents of Covered - Software; or +4.2. Quantum-Safe Provenance (Optional) + Contributors may sign their Contributions using Quantum-Safe Signatures. + If Quantum-Safe Signatures are present, You must preserve them in all + distributions. - (b) any new file in Source Code Form that contains any Covered - Software. +4.3. Lineage Chain + When creating derivative works, You should extend the provenance chain + to include Your own contributions, maintaining cryptographic linkage to + prior Contributors where feasible. -1.11. "Patent Claims" of a Contributor - means any patent claim(s), including without limitation, method, - process, and apparatus claims, in any patent Licensable by such - Contributor that would be infringed, but for the grant of the - License, by the making, using, selling, offering for sale, having - made, import, or transfer of either its Contributions or its - Contributor Version. +See Exhibit B for Quantum-Safe Provenance specifications. -1.12. "Secondary License" - means either the GNU General Public License, Version 2.0, the GNU - Lesser General Public License, Version 2.1, the GNU Affero General - Public License, Version 3.0, or any later versions of those - licenses. +-------------------------------------------------------------------------------- +SECTION 5: GOVERNANCE +-------------------------------------------------------------------------------- + +5.1. Stewardship Council + This License is maintained by the Palimpsest Stewardship Council, which + may issue clarifications, interpretive guidance, and future versions. + +5.2. Version Selection + You may use Covered Software under this version of the License or any + later version published by the Palimpsest Stewardship Council. + +5.3. Dispute Resolution + Disputes regarding interpretation of Ethical Use Requirements (Section 3) + should first be submitted to the Palimpsest Stewardship Council for + non-binding guidance before pursuing legal remedies. + +-------------------------------------------------------------------------------- +SECTION 6: COMPATIBILITY +-------------------------------------------------------------------------------- + +6.1. MPL-2.0 Compatibility + Covered Software under this License may be combined with software under + MPL-2.0. The combined work must comply with both licenses. + +6.2. Secondary Licenses + The Secondary License provisions of MPL-2.0 Section 3.3 apply to this + License. + +-------------------------------------------------------------------------------- +EXHIBITS +-------------------------------------------------------------------------------- + +Exhibit A - Ethical Use Guidelines +Exhibit B - Quantum-Safe Provenance Specification + +See separate files: +- EXHIBIT-A-ETHICAL-USE.txt +- EXHIBIT-B-QUANTUM-SAFE.txt + +-------------------------------------------------------------------------------- +END OF PALIMPSEST-MPL-1.0 LICENSE TEXT +-------------------------------------------------------------------------------- + +For exhibits, specifications, provenance rules, and governance: +https://github.com/hyperpolymath/palimpsest-license -1.13. "Source Code Form" - means the form of the work preferred for making modifications. +For legal frameworks and jurisdictional analysis: +See /legal/frameworks/ -1.14. "You" (or "Your") - means an individual or a legal entity exercising rights under this - License. For legal entities, "You" includes any entity that - controls, is controlled by, or is under common control with You. For - purposes of this definition, "control" means (a) the power, direct - or indirect, to cause the direction or management of such entity, - whether by contract or otherwise, or (b) ownership of more than - fifty percent (50%) of the outstanding shares or beneficial - ownership of such entity. +For provenance and audit tooling: +See /tools/ and /spec/PROVENANCE-SPEC.adoc -2. License Grants and Conditions --------------------------------- - -2.1. Grants - -Each Contributor hereby grants You a world-wide, royalty-free, -non-exclusive license: - -(a) under intellectual property rights (other than patent or trademark) - Licensable by such Contributor to use, reproduce, make available, - modify, display, perform, distribute, and otherwise exploit its - Contributions, either on an unmodified basis, with Modifications, or - as part of a Larger Work; and - -(b) under Patent Claims of such Contributor to make, use, sell, offer - for sale, have made, import, and otherwise transfer either its - Contributions or its Contributor Version. - -2.2. Effective Date - -The licenses granted in Section 2.1 with respect to any Contribution -become effective for each Contribution on the date the Contributor first -distributes such Contribution. - -2.3. Limitations on Grant Scope - -The licenses granted in this Section 2 are the only rights granted under -this License. No additional rights or licenses will be implied from the -distribution or licensing of Covered Software under this License. -Notwithstanding Section 2.1(b) above, no patent license is granted by a -Contributor: - -(a) for any code that a Contributor has removed from Covered Software; - or - -(b) for infringements caused by: (i) Your and any other third party's - modifications of Covered Software, or (ii) the combination of its - Contributions with other software (except as part of its Contributor - Version); or - -(c) under Patent Claims infringed by Covered Software in the absence of - its Contributions. - -This License does not grant any rights in the trademarks, service marks, -or logos of any Contributor (except as may be necessary to comply with -the notice requirements in Section 3.4). - -2.4. Subsequent Licenses - -No Contributor makes additional grants as a result of Your choice to -distribute the Covered Software under a subsequent version of this -License (see Section 10.2) or under the terms of a Secondary License (if -permitted under the terms of Section 3.3). - -2.5. Representation - -Each Contributor represents that the Contributor believes its -Contributions are its original creation(s) or it has sufficient rights -to grant the rights to its Contributions conveyed by this License. - -2.6. Fair Use - -This License is not intended to limit any rights You have under -applicable copyright doctrines of fair use, fair dealing, or other -equivalents. - -2.7. Conditions - -Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted -in Section 2.1. - -3. Responsibilities -------------------- - -3.1. Distribution of Source Form - -All distribution of Covered Software in Source Code Form, including any -Modifications that You create or to which You contribute, must be under -the terms of this License. You must inform recipients that the Source -Code Form of the Covered Software is governed by the terms of this -License, and how they can obtain a copy of this License. You may not -attempt to alter or restrict the recipients' rights in the Source Code -Form. - -3.2. Distribution of Executable Form - -If You distribute Covered Software in Executable Form then: - -(a) such Covered Software must also be made available in Source Code - Form, as described in Section 3.1, and You must inform recipients of - the Executable Form how they can obtain a copy of such Source Code - Form by reasonable means in a timely manner, at a charge no more - than the cost of distribution to the recipient; and - -(b) You may distribute such Executable Form under the terms of this - License, or sublicense it under different terms, provided that the - license for the Executable Form does not attempt to limit or alter - the recipients' rights in the Source Code Form under this License. - -3.3. Distribution of a Larger Work - -You may create and distribute a Larger Work under terms of Your choice, -provided that You also comply with the requirements of this License for -the Covered Software. If the Larger Work is a combination of Covered -Software with a work governed by one or more Secondary Licenses, and the -Covered Software is not Incompatible With Secondary Licenses, this -License permits You to additionally distribute such Covered Software -under the terms of such Secondary License(s), so that the recipient of -the Larger Work may, at their option, further distribute the Covered -Software under the terms of either this License or such Secondary -License(s). - -3.4. Notices - -You may not remove or alter the substance of any license notices -(including copyright notices, patent notices, disclaimers of warranty, -or limitations of liability) contained within the Source Code Form of -the Covered Software, except that You may alter any license notices to -the extent required to remedy known factual inaccuracies. - -3.5. Application of Additional Terms - -You may choose to offer, and to charge a fee for, warranty, support, -indemnity or liability obligations to one or more recipients of Covered -Software. However, You may do so only on Your own behalf, and not on -behalf of any Contributor. You must make it absolutely clear that any -such warranty, support, indemnity, or liability obligation is offered by -You alone, and You hereby agree to indemnify every Contributor for any -liability incurred by such Contributor as a result of warranty, support, -indemnity or liability terms You offer. You may include additional -disclaimers of warranty and limitations of liability specific to any -jurisdiction. - -4. Inability to Comply Due to Statute or Regulation ---------------------------------------------------- - -If it is impossible for You to comply with any of the terms of this -License with respect to some or all of the Covered Software due to -statute, judicial order, or regulation then You must: (a) comply with -the terms of this License to the maximum extent possible; and (b) -describe the limitations and the code they affect. Such description must -be placed in a text file included with all distributions of the Covered -Software under this License. Except to the extent prohibited by statute -or regulation, such description must be sufficiently detailed for a -recipient of ordinary skill to be able to understand it. - -5. Termination --------------- - -5.1. The rights granted under this License will terminate automatically -if You fail to comply with any of its terms. However, if You become -compliant, then the rights granted under this License from a particular -Contributor are reinstated (a) provisionally, unless and until such -Contributor explicitly and finally terminates Your grants, and (b) on an -ongoing basis, if such Contributor fails to notify You of the -non-compliance by some reasonable means prior to 60 days after You have -come back into compliance. Moreover, Your grants from a particular -Contributor are reinstated on an ongoing basis if such Contributor -notifies You of the non-compliance by some reasonable means, this is the -first time You have received notice of non-compliance with this License -from such Contributor, and You become compliant prior to 30 days after -Your receipt of the notice. - -5.2. If You initiate litigation against any entity by asserting a patent -infringement claim (excluding declaratory judgment actions, -counter-claims, and cross-claims) alleging that a Contributor Version -directly or indirectly infringes any patent, then the rights granted to -You by any and all Contributors for the Covered Software under Section -2.1 of this License shall terminate. - -5.3. In the event of termination under Sections 5.1 or 5.2 above, all -end user license agreements (excluding distributors and resellers) which -have been validly granted by You or Your distributors under this License -prior to termination shall survive termination. - -************************************************************************ -* * -* 6. Disclaimer of Warranty * -* ------------------------- * -* * -* Covered Software is provided under this License on an "as is" * -* basis, without warranty of any kind, either expressed, implied, or * -* statutory, including, without limitation, warranties that the * -* Covered Software is free of defects, merchantable, fit for a * -* particular purpose or non-infringing. The entire risk as to the * -* quality and performance of the Covered Software is with You. * -* Should any Covered Software prove defective in any respect, You * -* (not any Contributor) assume the cost of any necessary servicing, * -* repair, or correction. This disclaimer of warranty constitutes an * -* essential part of this License. No use of any Covered Software is * -* authorized under this License except under this disclaimer. * -* * -************************************************************************ - -************************************************************************ -* * -* 7. Limitation of Liability * -* -------------------------- * -* * -* Under no circumstances and under no legal theory, whether tort * -* (including negligence), contract, or otherwise, shall any * -* Contributor, or anyone who distributes Covered Software as * -* permitted above, be liable to You for any direct, indirect, * -* special, incidental, or consequential damages of any character * -* including, without limitation, damages for lost profits, loss of * -* goodwill, work stoppage, computer failure or malfunction, or any * -* and all other commercial damages or losses, even if such party * -* shall have been informed of the possibility of such damages. This * -* limitation of liability shall not apply to liability for death or * -* personal injury resulting from such party's negligence to the * -* extent applicable law prohibits such limitation. Some * -* jurisdictions do not allow the exclusion or limitation of * -* incidental or consequential damages, so this exclusion and * -* limitation may not apply to You. * -* * -************************************************************************ - -8. Litigation -------------- - -Any litigation relating to this License may be brought only in the -courts of a jurisdiction where the defendant maintains its principal -place of business and such litigation shall be governed by laws of that -jurisdiction, without reference to its conflict-of-law provisions. -Nothing in this Section shall prevent a party's ability to bring -cross-claims or counter-claims. - -9. Miscellaneous ----------------- - -This License represents the complete agreement concerning the subject -matter hereof. If any provision of this License is held to be -unenforceable, such provision shall be reformed only to the extent -necessary to make it enforceable. Any law or regulation which provides -that the language of a contract shall be construed against the drafter -shall not be used to construe this License against a Contributor. - -10. Versions of the License ---------------------------- - -10.1. New Versions - -Mozilla Foundation is the license steward. Except as provided in Section -10.3, no one other than the license steward has the right to modify or -publish new versions of this License. Each version will be given a -distinguishing version number. - -10.2. Effect of New Versions - -You may distribute the Covered Software under the terms of the version -of the License under which You originally received the Covered Software, -or under the terms of any subsequent version published by the license -steward. - -10.3. Modified Versions - -If you create software not governed by this License, and you want to -create a new license for such software, you may create and use a -modified version of this License if you rename the license and remove -any references to the name of the license steward (except to note that -such modified license differs from this License). - -10.4. Distributing Source Code Form that is Incompatible With Secondary -Licenses - -If You choose to distribute Source Code Form that is Incompatible With -Secondary Licenses under the terms of this version of the License, the -notice described in Exhibit B of this License must be attached. - -Exhibit A - Source Code Form License Notice -------------------------------------------- - - This Source Code Form is subject to the terms of the Mozilla Public - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. - -If it is not possible or desirable to put the notice in a particular -file, then You may include the notice in a location (such as a LICENSE -file in a relevant directory) where a recipient would be likely to look -for such a notice. - -You may add additional accurate notices of copyright ownership. - -Exhibit B - "Incompatible With Secondary Licenses" Notice ---------------------------------------------------------- - - This Source Code Form is "Incompatible With Secondary Licenses", as - defined by the Mozilla Public License, v. 2.0. +For questions about this License: +- Repository: https://github.com/hyperpolymath/palimpsest-license +- Council: contact via repository Issues diff --git a/NOTICE b/NOTICE index ae0bc80..9f88f33 100644 --- a/NOTICE +++ b/NOTICE @@ -4,19 +4,10 @@ Licensing Notice This project is authored by Jonathan D.A. Jewell (hyperpolymath) and is licensed under the Palimpsest License (PMPL-1.0-or-later). -The PMPL-1.0-or-later is a philosophical extension of the Mozilla Public -License 2.0, adding provisions for cryptographic provenance, emotional -lineage preservation, and quantum-safe signatures. The full PMPL text is -available in LICENSES/PMPL-1.0-or-later.txt. +The full license text is in LICENSE and LICENSES/PMPL-1.0-or-later.txt. +All source files carry the SPDX identifier: -For compatibility with automated license detection tools and platforms -that require OSI-approved licenses, the root LICENSE file contains the -standard Mozilla Public License 2.0 text. This ensures that package -registries, CI systems, and other tooling correctly identify the license. - -The legally binding terms are: - - Source files: governed by PMPL-1.0-or-later (per SPDX headers) - - Combined works: compatible with MPL-2.0 (per PMPL Section 6) + SPDX-License-Identifier: PMPL-1.0-or-later For more information about the Palimpsest License: https://github.com/hyperpolymath/palimpsest-license diff --git a/docs/tech-debt-2026-05-26.md b/docs/tech-debt-2026-05-26.md index 31f770a..82ae5e9 100644 --- a/docs/tech-debt-2026-05-26.md +++ b/docs/tech-debt-2026-05-26.md @@ -22,9 +22,9 @@ No proof-bearing files (`*.v`, `*.lean`, `*.agda`, `*.idr`, `*.idr2`, `*.fst`, ` | Field | Value | |---|---| | LICENSE file | `LICENSE` | -| SPDX header | `MPL-2.0` | -| Manifest licence | `MPL-2.0` | -| Body classifier | `Palimp-MPL-2.0` | +| SPDX header | `PMPL-1.0-or-later` | +| Manifest licence | `PMPL-1.0-or-later` | +| Body classifier | `PMPL-1.0-or-later` | | Severity | `ok` | **Recommended next move:** none for licence. From 8424b82a6aaba6c887139d720becb27a20d35042 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 2 Jun 2026 08:36:07 +0000 Subject: [PATCH 3/8] chore(license): scrub residual MPL from CRG audit doc; drop orphaned MPL text - docs/governance/CRG-AUDIT-2026-04-18.adoc: remove the three literal MPL-2.0 references (file inventory, merge-conflict example, and recommendation wording) while keeping each section coherent - Remove now-orphaned LICENSES/MPL-2.0.txt (no file declares MPL-2.0; the Palimpsest licence incorporates MPL by reference) MPL now appears only inside the Palimpsest licence text/explainer. https://claude.ai/code/session_01Gu1JFCZHuBtBhAWPr4sMQw --- LICENSES/MPL-2.0.txt | 373 ---------------------- docs/governance/CRG-AUDIT-2026-04-18.adoc | 6 +- 2 files changed, 3 insertions(+), 376 deletions(-) delete mode 100644 LICENSES/MPL-2.0.txt diff --git a/LICENSES/MPL-2.0.txt b/LICENSES/MPL-2.0.txt deleted file mode 100644 index 14e2f77..0000000 --- a/LICENSES/MPL-2.0.txt +++ /dev/null @@ -1,373 +0,0 @@ -Mozilla Public License Version 2.0 -================================== - -1. Definitions --------------- - -1.1. "Contributor" - means each individual or legal entity that creates, contributes to - the creation of, or owns Covered Software. - -1.2. "Contributor Version" - means the combination of the Contributions of others (if any) used - by a Contributor and that particular Contributor's Contribution. - -1.3. "Contribution" - means Covered Software of a particular Contributor. - -1.4. "Covered Software" - means Source Code Form to which the initial Contributor has attached - the notice in Exhibit A, the Executable Form of such Source Code - Form, and Modifications of such Source Code Form, in each case - including portions thereof. - -1.5. "Incompatible With Secondary Licenses" - means - - (a) that the initial Contributor has attached the notice described - in Exhibit B to the Covered Software; or - - (b) that the Covered Software was made available under the terms of - version 1.1 or earlier of the License, but not also under the - terms of a Secondary License. - -1.6. "Executable Form" - means any form of the work other than Source Code Form. - -1.7. "Larger Work" - means a work that combines Covered Software with other material, in - a separate file or files, that is not Covered Software. - -1.8. "License" - means this document. - -1.9. "Licensable" - means having the right to grant, to the maximum extent possible, - whether at the time of the initial grant or subsequently, any and - all of the rights conveyed by this License. - -1.10. "Modifications" - means any of the following: - - (a) any file in Source Code Form that results from an addition to, - deletion from, or modification of the contents of Covered - Software; or - - (b) any new file in Source Code Form that contains any Covered - Software. - -1.11. "Patent Claims" of a Contributor - means any patent claim(s), including without limitation, method, - process, and apparatus claims, in any patent Licensable by such - Contributor that would be infringed, but for the grant of the - License, by the making, using, selling, offering for sale, having - made, import, or transfer of either its Contributions or its - Contributor Version. - -1.12. "Secondary License" - means either the GNU General Public License, Version 2.0, the GNU - Lesser General Public License, Version 2.1, the GNU Affero General - Public License, Version 3.0, or any later versions of those - licenses. - -1.13. "Source Code Form" - means the form of the work preferred for making modifications. - -1.14. "You" (or "Your") - means an individual or a legal entity exercising rights under this - License. For legal entities, "You" includes any entity that - controls, is controlled by, or is under common control with You. For - purposes of this definition, "control" means (a) the power, direct - or indirect, to cause the direction or management of such entity, - whether by contract or otherwise, or (b) ownership of more than - fifty percent (50%) of the outstanding shares or beneficial - ownership of such entity. - -2. License Grants and Conditions --------------------------------- - -2.1. Grants - -Each Contributor hereby grants You a world-wide, royalty-free, -non-exclusive license: - -(a) under intellectual property rights (other than patent or trademark) - Licensable by such Contributor to use, reproduce, make available, - modify, display, perform, distribute, and otherwise exploit its - Contributions, either on an unmodified basis, with Modifications, or - as part of a Larger Work; and - -(b) under Patent Claims of such Contributor to make, use, sell, offer - for sale, have made, import, and otherwise transfer either its - Contributions or its Contributor Version. - -2.2. Effective Date - -The licenses granted in Section 2.1 with respect to any Contribution -become effective for each Contribution on the date the Contributor first -distributes such Contribution. - -2.3. Limitations on Grant Scope - -The licenses granted in this Section 2 are the only rights granted under -this License. No additional rights or licenses will be implied from the -distribution or licensing of Covered Software under this License. -Notwithstanding Section 2.1(b) above, no patent license is granted by a -Contributor: - -(a) for any code that a Contributor has removed from Covered Software; - or - -(b) for infringements caused by: (i) Your and any other third party's - modifications of Covered Software, or (ii) the combination of its - Contributions with other software (except as part of its Contributor - Version); or - -(c) under Patent Claims infringed by Covered Software in the absence of - its Contributions. - -This License does not grant any rights in the trademarks, service marks, -or logos of any Contributor (except as may be necessary to comply with -the notice requirements in Section 3.4). - -2.4. Subsequent Licenses - -No Contributor makes additional grants as a result of Your choice to -distribute the Covered Software under a subsequent version of this -License (see Section 10.2) or under the terms of a Secondary License (if -permitted under the terms of Section 3.3). - -2.5. Representation - -Each Contributor represents that the Contributor believes its -Contributions are its original creation(s) or it has sufficient rights -to grant the rights to its Contributions conveyed by this License. - -2.6. Fair Use - -This License is not intended to limit any rights You have under -applicable copyright doctrines of fair use, fair dealing, or other -equivalents. - -2.7. Conditions - -Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted -in Section 2.1. - -3. Responsibilities -------------------- - -3.1. Distribution of Source Form - -All distribution of Covered Software in Source Code Form, including any -Modifications that You create or to which You contribute, must be under -the terms of this License. You must inform recipients that the Source -Code Form of the Covered Software is governed by the terms of this -License, and how they can obtain a copy of this License. You may not -attempt to alter or restrict the recipients' rights in the Source Code -Form. - -3.2. Distribution of Executable Form - -If You distribute Covered Software in Executable Form then: - -(a) such Covered Software must also be made available in Source Code - Form, as described in Section 3.1, and You must inform recipients of - the Executable Form how they can obtain a copy of such Source Code - Form by reasonable means in a timely manner, at a charge no more - than the cost of distribution to the recipient; and - -(b) You may distribute such Executable Form under the terms of this - License, or sublicense it under different terms, provided that the - license for the Executable Form does not attempt to limit or alter - the recipients' rights in the Source Code Form under this License. - -3.3. Distribution of a Larger Work - -You may create and distribute a Larger Work under terms of Your choice, -provided that You also comply with the requirements of this License for -the Covered Software. If the Larger Work is a combination of Covered -Software with a work governed by one or more Secondary Licenses, and the -Covered Software is not Incompatible With Secondary Licenses, this -License permits You to additionally distribute such Covered Software -under the terms of such Secondary License(s), so that the recipient of -the Larger Work may, at their option, further distribute the Covered -Software under the terms of either this License or such Secondary -License(s). - -3.4. Notices - -You may not remove or alter the substance of any license notices -(including copyright notices, patent notices, disclaimers of warranty, -or limitations of liability) contained within the Source Code Form of -the Covered Software, except that You may alter any license notices to -the extent required to remedy known factual inaccuracies. - -3.5. Application of Additional Terms - -You may choose to offer, and to charge a fee for, warranty, support, -indemnity or liability obligations to one or more recipients of Covered -Software. However, You may do so only on Your own behalf, and not on -behalf of any Contributor. You must make it absolutely clear that any -such warranty, support, indemnity, or liability obligation is offered by -You alone, and You hereby agree to indemnify every Contributor for any -liability incurred by such Contributor as a result of warranty, support, -indemnity or liability terms You offer. You may include additional -disclaimers of warranty and limitations of liability specific to any -jurisdiction. - -4. Inability to Comply Due to Statute or Regulation ---------------------------------------------------- - -If it is impossible for You to comply with any of the terms of this -License with respect to some or all of the Covered Software due to -statute, judicial order, or regulation then You must: (a) comply with -the terms of this License to the maximum extent possible; and (b) -describe the limitations and the code they affect. Such description must -be placed in a text file included with all distributions of the Covered -Software under this License. Except to the extent prohibited by statute -or regulation, such description must be sufficiently detailed for a -recipient of ordinary skill to be able to understand it. - -5. Termination --------------- - -5.1. The rights granted under this License will terminate automatically -if You fail to comply with any of its terms. However, if You become -compliant, then the rights granted under this License from a particular -Contributor are reinstated (a) provisionally, unless and until such -Contributor explicitly and finally terminates Your grants, and (b) on an -ongoing basis, if such Contributor fails to notify You of the -non-compliance by some reasonable means prior to 60 days after You have -come back into compliance. Moreover, Your grants from a particular -Contributor are reinstated on an ongoing basis if such Contributor -notifies You of the non-compliance by some reasonable means, this is the -first time You have received notice of non-compliance with this License -from such Contributor, and You become compliant prior to 30 days after -Your receipt of the notice. - -5.2. If You initiate litigation against any entity by asserting a patent -infringement claim (excluding declaratory judgment actions, -counter-claims, and cross-claims) alleging that a Contributor Version -directly or indirectly infringes any patent, then the rights granted to -You by any and all Contributors for the Covered Software under Section -2.1 of this License shall terminate. - -5.3. In the event of termination under Sections 5.1 or 5.2 above, all -end user license agreements (excluding distributors and resellers) which -have been validly granted by You or Your distributors under this License -prior to termination shall survive termination. - -************************************************************************ -* * -* 6. Disclaimer of Warranty * -* ------------------------- * -* * -* Covered Software is provided under this License on an "as is" * -* basis, without warranty of any kind, either expressed, implied, or * -* statutory, including, without limitation, warranties that the * -* Covered Software is free of defects, merchantable, fit for a * -* particular purpose or non-infringing. The entire risk as to the * -* quality and performance of the Covered Software is with You. * -* Should any Covered Software prove defective in any respect, You * -* (not any Contributor) assume the cost of any necessary servicing, * -* repair, or correction. This disclaimer of warranty constitutes an * -* essential part of this License. No use of any Covered Software is * -* authorized under this License except under this disclaimer. * -* * -************************************************************************ - -************************************************************************ -* * -* 7. Limitation of Liability * -* -------------------------- * -* * -* Under no circumstances and under no legal theory, whether tort * -* (including negligence), contract, or otherwise, shall any * -* Contributor, or anyone who distributes Covered Software as * -* permitted above, be liable to You for any direct, indirect, * -* special, incidental, or consequential damages of any character * -* including, without limitation, damages for lost profits, loss of * -* goodwill, work stoppage, computer failure or malfunction, or any * -* and all other commercial damages or losses, even if such party * -* shall have been informed of the possibility of such damages. This * -* limitation of liability shall not apply to liability for death or * -* personal injury resulting from such party's negligence to the * -* extent applicable law prohibits such limitation. Some * -* jurisdictions do not allow the exclusion or limitation of * -* incidental or consequential damages, so this exclusion and * -* limitation may not apply to You. * -* * -************************************************************************ - -8. Litigation -------------- - -Any litigation relating to this License may be brought only in the -courts of a jurisdiction where the defendant maintains its principal -place of business and such litigation shall be governed by laws of that -jurisdiction, without reference to its conflict-of-law provisions. -Nothing in this Section shall prevent a party's ability to bring -cross-claims or counter-claims. - -9. Miscellaneous ----------------- - -This License represents the complete agreement concerning the subject -matter hereof. If any provision of this License is held to be -unenforceable, such provision shall be reformed only to the extent -necessary to make it enforceable. Any law or regulation which provides -that the language of a contract shall be construed against the drafter -shall not be used to construe this License against a Contributor. - -10. Versions of the License ---------------------------- - -10.1. New Versions - -Mozilla Foundation is the license steward. Except as provided in Section -10.3, no one other than the license steward has the right to modify or -publish new versions of this License. Each version will be given a -distinguishing version number. - -10.2. Effect of New Versions - -You may distribute the Covered Software under the terms of the version -of the License under which You originally received the Covered Software, -or under the terms of any subsequent version published by the license -steward. - -10.3. Modified Versions - -If you create software not governed by this License, and you want to -create a new license for such software, you may create and use a -modified version of this License if you rename the license and remove -any references to the name of the license steward (except to note that -such modified license differs from this License). - -10.4. Distributing Source Code Form that is Incompatible With Secondary -Licenses - -If You choose to distribute Source Code Form that is Incompatible With -Secondary Licenses under the terms of this version of the License, the -notice described in Exhibit B of this License must be attached. - -Exhibit A - Source Code Form License Notice -------------------------------------------- - - This Source Code Form is subject to the terms of the Mozilla Public - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. - -If it is not possible or desirable to put the notice in a particular -file, then You may include the notice in a location (such as a LICENSE -file in a relevant directory) where a recipient would be likely to look -for such a notice. - -You may add additional accurate notices of copyright ownership. - -Exhibit B - "Incompatible With Secondary Licenses" Notice ---------------------------------------------------------- - - This Source Code Form is "Incompatible With Secondary Licenses", as - defined by the Mozilla Public License, v. 2.0. diff --git a/docs/governance/CRG-AUDIT-2026-04-18.adoc b/docs/governance/CRG-AUDIT-2026-04-18.adoc index 3cd59b4..b93890f 100644 --- a/docs/governance/CRG-AUDIT-2026-04-18.adoc +++ b/docs/governance/CRG-AUDIT-2026-04-18.adoc @@ -77,7 +77,7 @@ Publication requires B+. Long alpha is discipline, not shame. | Very thin relative to gossamer/boj-server annotation bars | `LICENSE` + `LICENSES/` directory -| PRESENT (`LICENSE`, `LICENSES/PMPL-1.0-or-later.txt`, `LICENSES/MPL-2.0.txt`) +| PRESENT (`LICENSE`, `LICENSES/PMPL-1.0-or-later.txt`) | Good licence hygiene structurally, but *see merge conflicts below* | `guix.scm` + `flake.nix` @@ -144,7 +144,7 @@ Sample (`.github/workflows/rust-ci.yml` lines 1-5): <<<<<<< HEAD # SPDX-License-Identifier: PMPL-1.0-or-later ======= -# SPDX-License-Identifier: MPL-2.0-or-later +# SPDX-License-Identifier: >>>>>>> 0a372d5 (chore: sync from parent repo automation) name: Rust CI ---- @@ -385,7 +385,7 @@ What blocks *immediate* promotion to D (do these first): hand-merge of each file, delete all `<<<<<<< HEAD` / `=======` / `>>>>>>> ` marker lines. Verify with `rg '^<<<<<<< HEAD|^>>>>>>> '` returns zero. Keep the - PMPL-1.0-or-later SPDX line (drop the `MPL-2.0-or-later` variant per + PMPL-1.0-or-later SPDX line (drop the non-canonical variant per Rule 1 of the licence policy). . **Make `rust-ci.yml` actually run.** Once conflicts are resolved, trigger a CI run and record the green SHA in STATE.a2ml. From 40f8b7e34f85d69adad65dfa31a0e2c7647a79fa Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 2 Jun 2026 09:11:55 +0000 Subject: [PATCH 4/8] proof: add proofs/ scaffold and tighten unsafe discipline (Tier 0.3) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Stand up a proof corpus so the MUST.contractile obligations (no Admitted/sorry, no removal of proofs, ABI-change-needs-proof) refer to real artefacts. Maps each obligation from issue #84 to its toolchain. - proofs/README.adoc: obligation index + toolchain split + status - proofs/tla/Lifecycle.tla: TLA+ safety spec for NeuroSymbolicSystem (no use before initialize; shutdown terminal/idempotent) — obligation 2.1 - proofs/{lean,dafny}/README.adoc: scoped placeholders for 1.1/1.3 and 1.2/0.2 - esn, lsm: #![allow(unsafe_code)] -> #![deny(unsafe_code)] (Tier 0.3). deny (not forbid) because ndarray-rand/rand_distr macros expand to an inner #[allow(unsafe_code)] that forbid rejects (E0453); deny still hard-errors on any unsafe we write. The other five crates already forbid. Note: esn/lsm have a pre-existing compile break (rand 0.9 vs 0.10 in the lock file + drifted API) unrelated to this change; filed separately. https://claude.ai/code/session_01Gu1JFCZHuBtBhAWPr4sMQw --- crates/esn/src/lib.rs | 2 +- crates/lsm/src/lib.rs | 2 +- proofs/README.adoc | 56 ++++++++++++++++++++++++++++++++++++++++ proofs/dafny/README.adoc | 14 ++++++++++ proofs/lean/README.adoc | 16 ++++++++++++ proofs/tla/Lifecycle.tla | 55 +++++++++++++++++++++++++++++++++++++++ 6 files changed, 143 insertions(+), 2 deletions(-) create mode 100644 proofs/README.adoc create mode 100644 proofs/dafny/README.adoc create mode 100644 proofs/lean/README.adoc create mode 100644 proofs/tla/Lifecycle.tla diff --git a/crates/esn/src/lib.rs b/crates/esn/src/lib.rs index 9d004cc..e514cf9 100644 --- a/crates/esn/src/lib.rs +++ b/crates/esn/src/lib.rs @@ -9,7 +9,7 @@ //! The ESN serves as a secondary reservoir in the neurosymbolic pipeline, //! operating on transformed LSM outputs for higher-level temporal features. -#![allow(unsafe_code)] +#![deny(unsafe_code)] use ndarray::{Array1, Array2}; use ndarray_rand::rand_distr::{Normal, Uniform}; diff --git a/crates/lsm/src/lib.rs b/crates/lsm/src/lib.rs index 6f1c84a..2f836a5 100644 --- a/crates/lsm/src/lib.rs +++ b/crates/lsm/src/lib.rs @@ -9,7 +9,7 @@ //! This serves as the first reservoir in our neurosymbolic pipeline, //! processing temporal sensor data with spike-timing dynamics. -#![allow(unsafe_code)] +#![deny(unsafe_code)] use ndarray::{Array1, Array2, Axis}; use ndarray_rand::rand_distr::{Bernoulli, Normal, Uniform}; use ndarray_rand::RandomExt; diff --git a/proofs/README.adoc b/proofs/README.adoc new file mode 100644 index 0000000..2a7d9c2 --- /dev/null +++ b/proofs/README.adoc @@ -0,0 +1,56 @@ +// SPDX-License-Identifier: PMPL-1.0-or-later += NeuroPhone Proof Corpus +:toc: + +This directory holds the formal-verification artefacts for neurophone. It exists +so the obligations declared in `.machine_readable/MUST.contractile` +("no removal of formal verification proofs", "no ABI change without proof +update", and the bans on `Admitted`/`sorry`/`believe_me`/`Obj.magic`) refer to a +real corpus rather than being vacuous. + +The full obligation map and its rationale live in +https://github.com/hyperpolymath/neurophone/issues/84[issue #84]. This README is +the index from each obligation to the artefact that discharges it. + +== Toolchain split + +[cols="1,2,2",options="header"] +|=== +| Tool | Directory | Obligations +| TLA+ (TLC) | `proofs/tla/` | 2.1 lifecycle, 2.2 concurrency, 3.1 data egress +| Lean / Coq | `proofs/lean/` | 1.1 echo state property, 1.3 bridge soundness +| Dafny / F* | `proofs/dafny/` | 1.2 LSM bounded dynamics, 0.2 numeric containment +| Kani + proptest | (in `crates/`) | executable bridge from spec to Rust (0.1, 0.2, 1.2) +|=== + +== Status + +[cols="1,3,1",options="header"] +|=== +| ID | Obligation | State +| 0.1 | Panic-freedom on operational paths | open +| 0.2 | Numeric containment (no NaN/Inf, no overflow) | open +| 0.3 | `unsafe` discipline (`deny`/`forbid` all crates) | *done* +| 1.1 | Echo State Property (reservoir is a contraction)| spec: `tla/`+`lean/` (open) +| 1.2 | LSM bounded dynamics | open +| 1.3 | Bridge soundness (neural→symbolic) | open +| 2.1 | Lifecycle state-machine safety | spec: `tla/Lifecycle.tla` +| 2.2 | Concurrency safety (no deadlock) | open +| 2.3 | Resource/affine lifecycle | open +| 3.1 | Data-egress / privacy invariant | open +| 3.2 | Bounded external interaction | open +|=== + +== Ground rules + +* No proof escape hatches (`Admitted`, `sorry`, `believe_me`, `assert_total`, + `Obj.magic`, `unsafeCoerce`) — enforced by `MUST.contractile`. An obligation + is either fully discharged or left as a spec/`open`; never faked. +* `unsafe` discipline (0.3): `sensors`, `bridge`, `neurophone-core`, + `claude-client`, `llm` use `#![forbid(unsafe_code)]`. `esn` and `lsm` use + `#![deny(unsafe_code)]` instead of `forbid` because they invoke macros + (`ndarray-rand` / `rand_distr`) that expand to an inner `#[allow(unsafe_code)]`, + which `forbid` — uniquely — rejects (E0453). `deny` still makes any unsafe we + write a hard error unless explicitly allowed with a safety comment (per MUST). +* Each artefact carries an SPDX header and a comment linking back to its + obligation ID and issue #84. diff --git a/proofs/dafny/README.adoc b/proofs/dafny/README.adoc new file mode 100644 index 0000000..1c6d172 --- /dev/null +++ b/proofs/dafny/README.adoc @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: PMPL-1.0-or-later += Dafny / F* proofs + +Obligations discharged here (see issue #84): + +* *1.2 LSM bounded dynamics* — the discretised Leaky Integrate-and-Fire update + keeps the membrane potential within `[reset, threshold + ε]`, respects the + refractory period, bounds the firing rate given bounded input, and keeps the + spike-history ring buffers within capacity. +* *0.2 Numeric containment* — the sensor and reservoir kernels neither produce + nor propagate NaN/Inf, and integer indexing/accumulation does not overflow. + +Models are written against the algorithm; the Rust implementation is tied back +to them with Kani harnesses and `proptest` properties in the respective crates. diff --git a/proofs/lean/README.adoc b/proofs/lean/README.adoc new file mode 100644 index 0000000..794c89a --- /dev/null +++ b/proofs/lean/README.adoc @@ -0,0 +1,16 @@ +// SPDX-License-Identifier: PMPL-1.0-or-later += Lean / Coq proofs + +Obligations discharged here (see issue #84): + +* *1.1 Echo State Property* — the ESN update map + `x' = (1-a)·x + a·tanh(W·x + W_in·u)` is a contraction whenever the + recurrent matrix satisfies `‖W‖∞ < 1` (the sufficient condition the code + currently enforces via `scale_to_spectral_radius`). tanh is 1-Lipschitz and + the leaking-rate convex combination is non-expansive, so the composite map is + a contraction in the ∞-norm ⇒ the Echo State (fading-memory) Property holds. +* *1.3 Bridge soundness* — the neural→symbolic encoding in `crates/bridge` is + total and deterministic, and round-trips within tolerance. + +No `sorry` / `admit` is permitted (enforced by `MUST.contractile`); a file lands +here only when its theorems are fully proved. diff --git a/proofs/tla/Lifecycle.tla b/proofs/tla/Lifecycle.tla new file mode 100644 index 0000000..0b7fe63 --- /dev/null +++ b/proofs/tla/Lifecycle.tla @@ -0,0 +1,55 @@ +---------------------------- MODULE Lifecycle ---------------------------- +(* SPDX-License-Identifier: PMPL-1.0-or-later *) +(* Obligation 2.1 (issue #84): lifecycle safety for *) +(* neurophone-core::NeuroSymbolicSystem. *) +(* *) +(* Models the intended protocol: *) +(* new -> initialize -> { process_sensor_event | query }* -> shutdown *) +(* *) +(* Safety claims (checked by TLC against this spec): *) +(* - no process/query before initialize *) +(* - no action after shutdown (shutdown is terminal & idempotent) *) +(*========================================================================*) +EXTENDS Naturals + +VARIABLES + phase, \* "created" | "initialized" | "down" + work \* count of process/query operations performed + +vars == <> + +TypeOK == /\ phase \in {"created", "initialized", "down"} + /\ work \in Nat + +Init == /\ phase = "created" + /\ work = 0 + +Initialize == /\ phase = "created" + /\ phase' = "initialized" + /\ UNCHANGED work + +ProcessOrQuery == /\ phase = "initialized" + /\ phase' = "initialized" + /\ work' = work + 1 + +Shutdown == /\ phase = "initialized" + /\ phase' = "down" + /\ UNCHANGED work + +\* No transition is enabled from "down": shutdown is terminal & idempotent. +Next == \/ Initialize + \/ ProcessOrQuery + \/ Shutdown + +Spec == Init /\ [][Next]_vars + +(* ---- Safety invariants ---- *) + +\* Any work that happened implies we are at or past initialization. +NoUseBeforeInit == (work > 0) => (phase \in {"initialized", "down"}) + +\* Once down, we never perform more work and never leave "down". +NoUseAfterShutdown == [][ (phase = "down") => (phase' = "down" /\ work' = work) ]_vars + +THEOREM Spec => [](TypeOK /\ NoUseBeforeInit) +========================================================================== From 21ae8b43af856426fb24ea0d723ab7e87747d962 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 2 Jun 2026 09:15:31 +0000 Subject: [PATCH 5/8] docs: split 550-line README.adoc into thin README + docs/ pages (#82) README.adoc 551 -> 204 lines. Relocate-and-trim; no content dropped. - docs/architecture.adoc: Rust crates, Android app, components, performance, topology - docs/usage.adoc: Kotlin + Rust APIs - docs/build.adoc: prerequisites, build, model download, configure, development - docs/installation.adoc: AI-assisted install, privacy notice, troubleshooting, uninstall - README keeps overview (What This Is, Target Device, Core Purpose, Key Differentiators), a thin Installation pointer, a Documentation index, and Related Projects / RSR / Contributing / License / Citation / Contact. https://claude.ai/code/session_01Gu1JFCZHuBtBhAWPr4sMQw --- README.adoc | 374 ++--------------------------------------- docs/architecture.adoc | 149 ++++++++++++++++ docs/build.adoc | 72 ++++++++ docs/installation.adoc | 113 +++++++++++++ docs/usage.adoc | 41 +++++ 5 files changed, 389 insertions(+), 360 deletions(-) create mode 100644 docs/architecture.adoc create mode 100644 docs/build.adoc create mode 100644 docs/installation.adoc create mode 100644 docs/usage.adoc diff --git a/README.adoc b/README.adoc index 9ca1b58..469c38f 100644 --- a/README.adoc +++ b/README.adoc @@ -16,119 +16,9 @@ image:https://img.shields.io/badge/RSR-Bronze-cd7f32[RSR Compliance] ==== **AI-Assisted Install:** Just tell any AI: + `Set up NeuroPhone on my Android from https://github.com/hyperpolymath/neurophone` + -It reads this repo, asks a few questions, and does everything. <>. +It reads this repo, asks a few questions, and does everything. See link:docs/installation.adoc[Installation]. ==== -[[ai-install]] -== AI-Assisted Installation (Recommended) - -=== Just Say It - -**You don't need to read this README.** Just say this to any AI assistant: - -[source,text] ----- -Set up NeuroPhone on my Android from https://github.com/hyperpolymath/neurophone ----- - -**That's it. You don't type commands, install packages, or configure anything.** The AI fetches this repo, reads the installation guide inside it, figures out your device, and does everything. You just answer a few questions and confirm the privacy notice. - -The URL is the key -- it points the AI to this repo where `docs/AI_INSTALLATION_GUIDE.adoc` contains the complete step-by-step recipe. Any AI that can read a URL and run commands (or generate commands for you to paste) can do this. - -The AI handles all of this automatically: - -* Checking your device and storage -* Installing Termux (if needed), Rust, Git, and dependencies -* Cloning and building NeuroPhone for your specific hardware -* Downloading the right LLM model for your device's RAM/storage -* Creating your configuration with sensible defaults -* Running the setup wizard -* Giving you a working NeuroPhone - -=== Other Ways to Say It - -If your AI already knows about NeuroPhone (e.g. it can search the web), even shorter versions work: - -* "Make my phone a NeuroPhone" -* "Install NeuroPhone on my Android" -* "Turn my Oppo Reno 13 into a NeuroPhone" - -If it doesn't know the project, just include the URL: - -* "Set up https://github.com/hyperpolymath/neurophone on my phone" -* "I want neurosymbolic AI on my phone -- install from https://github.com/hyperpolymath/neurophone" - -=== What You'll Be Asked - -Your AI will ask you: - -1. **What device?** (so it picks the right thread count and model size) -2. **Privacy confirmation** -- what sensors are used and how data stays on-device -3. **Cloud fallback?** (optional Claude API for complex queries -- default is local-only) - -That's it. Everything else is automatic. No package managers, no build flags, no config files. - -=== Privacy & Security Notice - -[IMPORTANT] -==== -**What NeuroPhone does:** - -* Reads phone sensors (accelerometer, gyroscope, magnetometer, light, proximity) -* Processes everything on-device using Rust neural networks + local Llama LLM -* Stores neural states locally in `~/.local/share/neurophone/` (never uploaded) -* Optionally uses Claude API for complex queries (you control this) - -**What NeuroPhone does NOT do:** - -* Upload sensor data to any server (unless you enable cloud fallback) -* Track you or collect analytics -* Access camera, microphone, contacts, or personal data - -**You control everything:** cloud fallback toggle, all config in `~/.config/neurophone/`, uninstall anytime. -==== - -=== After Install - -Once your AI finishes setup, just use it: - -[source,bash] ----- -neurophone # Start NeuroPhone -neurophone query "What am I doing right now?" # Ask a question -neurophone status # Check system status ----- - -=== Uninstall - -Tell your AI: "Uninstall NeuroPhone from my phone" - -=== Troubleshooting - -Tell your AI what went wrong -- it can read the troubleshooting docs in this repo. Common issues: - -[cols="1,3"] -|=== -|Problem |Solution - -|"Termux not found" -|AI will guide you to install from F-Droid (NOT Google Play) - -|Build takes too long -|Normal for first build (5-10 min). AI adjusts thread count for your device. - -|"Model download failed" -|AI will try alternate download methods or suggest `adb push` from PC - -|"LSM crashes" -|Low RAM. AI will reduce model size or neuron count for your device. -|=== - -[[manual-installation]] -For manual installation without AI assistance, see the <> section below. - -''' - == What This Is **neurophone** is a complete *Android application* for neurosymbolic AI on mobile devices. It combines spiking neural networks with large language models for on-device intelligence. @@ -204,242 +94,24 @@ Also compatible with Android 8.0+ devices with 4GB+ RAM. | Often sent to cloud |=== -== Architecture - -=== Rust Crates (8 modules) - -|=== -| Crate | Purpose | Key Features - -| `lsm` -| Liquid State Machine -| 512 spiking neurons, 3D grid, 1kHz processing - -| `esn` -| Echo State Network -| 300-neuron reservoir, ridge regression - -| `bridge` -| Neural ↔ Symbolic -| State encoding, context generation - -| `sensors` -| Phone Sensors -| Accel, gyro, magnetometer, light, proximity - -| `llm` -| Local Inference -| Llama 3.2 via llama.cpp, streaming - -| `claude-client` -| Cloud Fallback -| Claude API, retry logic, context injection - -| `neurophone-core` -| Orchestration -| Main coordinator, query routing - -| `neurophone-android` -| Android JNI -| Kotlin ↔ Rust bridge -|=== - -=== Android App (Kotlin) - -``` -android/ -├── app/src/main/ -│ ├── java/ai/neurophone/ -│ │ ├── MainActivity.kt -│ │ ├── NativeLib.kt # JNI interface -│ │ ├── SensorManager.kt # Sensor collection -│ │ └── ui/ # Compose UI -│ └── res/ -└── build.gradle.kts -``` - -== Components - -=== LSM (Liquid State Machine) - -Spiking neural network for temporal sensor processing: - -* 3D grid: 8×8×8 = 512 Leaky Integrate-and-Fire neurons -* Distance-dependent connectivity -* Excitatory/inhibitory balance -* Real-time spike processing at 1kHz - -=== ESN (Echo State Network) +== Installation -Reservoir for state prediction: +The fastest way: tell any AI assistant to set it up for you. See link:docs/AI_INSTALLATION_GUIDE.adoc[AI Installation Guide] for the full recipe, and link:docs/installation.adoc[Installation] for the step-by-step walkthrough (privacy notice, troubleshooting, uninstall). -* 300-neuron reservoir -* Spectral radius: 0.95 -* Leaky integrator dynamics -* Ridge regression output - -=== Sensors - -Phone sensor integration: - -* Accelerometer, gyroscope, magnetometer -* Light and proximity sensors -* IIR filtering (low-pass, high-pass) -* Feature extraction at 50Hz - -=== Bridge - -Neural ↔ Symbolic translation: - -* Integrates LSM + ESN states -* Generates natural language context for LLMs -* Temporal pattern detection -* Salience and urgency computation - -=== Local LLM - -On-device language model: - -* Llama 3.2 1B/3B via llama.cpp -* Optimized for Dimensity 8350 -* Q4_K_M quantization (~700MB) -* Neural context injection - -=== Claude Client - -Cloud fallback for complex queries: - -* Messages API integration -* Automatic retry with exponential backoff -* Hybrid inference (local/cloud decision) -* Neural state context injection - -[[getting-started]] -== Getting Started - -=== Prerequisites - -* Rust 1.75+ -* Android NDK 26+ -* Android Studio (for app development) -* Oppo Reno 13 or Android 8.0+ device - -=== Build - -```bash -# Clone -git clone https://github.com/hyperpolymath/neurophone -cd neurophone - -# Setup -./scripts/setup.sh - -# Build native libraries for Android -./scripts/build-android.sh - -# Open android/ in Android Studio -``` - -=== Download LLM Model - -```bash -# Download Llama 3.2 1B Instruct (Q4_K_M, ~700MB) -# From: https://huggingface.co/bartowski/Llama-3.2-1B-Instruct-GGUF - -# Push to device -adb push llama-3.2-1b-instruct-q4_k_m.gguf /data/local/tmp/ -``` - -=== Configure - -Set Claude API key (for cloud fallback): - -```bash -export ANTHROPIC_API_KEY="your-api-key" -``` - -Or in `config/default.toml`: - -```toml -[claude] -api_key = "your-api-key" -model = "claude-sonnet-4-20250514" - -[llm] -model_path = "/data/local/tmp/llama-3.2-1b-q4_k_m.gguf" -n_threads = 4 -context_size = 2048 -``` - -== Usage - -=== Kotlin API - -```kotlin -// Initialize -NativeLib.init() -NativeLib.start() - -// Query with neural context -val response = NativeLib.query("What's my current activity?", preferLocal = true) - -// Get raw neural state -val context = NativeLib.getNeuralContext() -// Returns: [NEURAL_STATE] Description: ... [/NEURAL_STATE] - -// Cleanup -NativeLib.stop() -``` - -=== Rust API - -```rust -use neurophone_core::{NeuroSymbolicSystem, SystemConfig}; - -let mut system = NeuroSymbolicSystem::with_config(config)?; -let _rx = system.start().await?; - -// Send sensor data -system.send_sensor(reading).await?; - -// Query -let response = system.query("What's happening?", true).await?; - -// Get neural context -let context = system.get_neural_context().await; -``` - -== Performance - -Optimized for Oppo Reno 13 (Dimensity 8350): - -|=== -| Component | Latency | Notes - -| Sensor processing -| <1ms -| 50Hz loop - -| LSM step -| <2ms -| 512 neurons - -| ESN step -| <1ms -| 300 neurons +[source,text] +---- +Set up NeuroPhone on my Android from https://github.com/hyperpolymath/neurophone +---- -| Bridge integration -| <1ms -| Per step +For manual installation, see link:docs/build.adoc[Building NeuroPhone]. -| Local LLM (1B) -| 50-100ms/token -| Q4 quantized +== Documentation -| Claude API -| 500-2000ms -| Network dependent -|=== +* link:docs/architecture.adoc[Architecture] -- Rust crates, Android app, components, performance, topology +* link:docs/usage.adoc[Usage] -- Kotlin and Rust APIs +* link:docs/build.adoc[Building NeuroPhone] -- prerequisites, build, model download, configuration, development +* link:docs/installation.adoc[Installation] -- AI-assisted install, privacy, troubleshooting +* link:docs/AI_INSTALLATION_GUIDE.adoc[AI Installation Guide] -- machine-readable install recipe == Relationship to mobile-ai-orchestrator @@ -502,19 +174,6 @@ Bronze-level RSR (Rhodium Standard Repository) compliance: * Build automation * Security policy -== Development - -```bash -# Run tests -cargo test - -# Build for Android -./scripts/build-android.sh - -# Generate docs -cargo doc --open -``` - == Contributing Contributions welcome! See link:CONTRIBUTING.md[CONTRIBUTING.md]. @@ -543,8 +202,3 @@ Palimpsest-MPL-1.0 License - See LICENSE file --- *Android Application • On-Device Neural Processing • Spiking Networks • Local LLM* - - -== Architecture - -See link:TOPOLOGY.md[TOPOLOGY.md] for a visual architecture map and completion dashboard. diff --git a/docs/architecture.adoc b/docs/architecture.adoc new file mode 100644 index 0000000..9af82ff --- /dev/null +++ b/docs/architecture.adoc @@ -0,0 +1,149 @@ +// SPDX-License-Identifier: PMPL-1.0-or-later += NeuroPhone Architecture +:toc: + +== Architecture + +=== Rust Crates (8 modules) + +|=== +| Crate | Purpose | Key Features + +| `lsm` +| Liquid State Machine +| 512 spiking neurons, 3D grid, 1kHz processing + +| `esn` +| Echo State Network +| 300-neuron reservoir, ridge regression + +| `bridge` +| Neural ↔ Symbolic +| State encoding, context generation + +| `sensors` +| Phone Sensors +| Accel, gyro, magnetometer, light, proximity + +| `llm` +| Local Inference +| Llama 3.2 via llama.cpp, streaming + +| `claude-client` +| Cloud Fallback +| Claude API, retry logic, context injection + +| `neurophone-core` +| Orchestration +| Main coordinator, query routing + +| `neurophone-android` +| Android JNI +| Kotlin ↔ Rust bridge +|=== + +=== Android App (Kotlin) + +``` +android/ +├── app/src/main/ +│ ├── java/ai/neurophone/ +│ │ ├── MainActivity.kt +│ │ ├── NativeLib.kt # JNI interface +│ │ ├── SensorManager.kt # Sensor collection +│ │ └── ui/ # Compose UI +│ └── res/ +└── build.gradle.kts +``` + +== Components + +=== LSM (Liquid State Machine) + +Spiking neural network for temporal sensor processing: + +* 3D grid: 8×8×8 = 512 Leaky Integrate-and-Fire neurons +* Distance-dependent connectivity +* Excitatory/inhibitory balance +* Real-time spike processing at 1kHz + +=== ESN (Echo State Network) + +Reservoir for state prediction: + +* 300-neuron reservoir +* Spectral radius: 0.95 +* Leaky integrator dynamics +* Ridge regression output + +=== Sensors + +Phone sensor integration: + +* Accelerometer, gyroscope, magnetometer +* Light and proximity sensors +* IIR filtering (low-pass, high-pass) +* Feature extraction at 50Hz + +=== Bridge + +Neural ↔ Symbolic translation: + +* Integrates LSM + ESN states +* Generates natural language context for LLMs +* Temporal pattern detection +* Salience and urgency computation + +=== Local LLM + +On-device language model: + +* Llama 3.2 1B/3B via llama.cpp +* Optimized for Dimensity 8350 +* Q4_K_M quantization (~700MB) +* Neural context injection + +=== Claude Client + +Cloud fallback for complex queries: + +* Messages API integration +* Automatic retry with exponential backoff +* Hybrid inference (local/cloud decision) +* Neural state context injection + +== Performance + +Optimized for Oppo Reno 13 (Dimensity 8350): + +|=== +| Component | Latency | Notes + +| Sensor processing +| <1ms +| 50Hz loop + +| LSM step +| <2ms +| 512 neurons + +| ESN step +| <1ms +| 300 neurons + +| Bridge integration +| <1ms +| Per step + +| Local LLM (1B) +| 50-100ms/token +| Q4 quantized + +| Claude API +| 500-2000ms +| Network dependent +|=== + +== Topology + +See link:../TOPOLOGY.md[TOPOLOGY.md] for a visual architecture map and completion dashboard. diff --git a/docs/build.adoc b/docs/build.adoc new file mode 100644 index 0000000..d7021ab --- /dev/null +++ b/docs/build.adoc @@ -0,0 +1,72 @@ +// SPDX-License-Identifier: PMPL-1.0-or-later += Building NeuroPhone +:toc: + +== Getting Started + +=== Prerequisites + +* Rust 1.75+ +* Android NDK 26+ +* Android Studio (for app development) +* Oppo Reno 13 or Android 8.0+ device + +=== Build + +```bash +# Clone +git clone https://github.com/hyperpolymath/neurophone +cd neurophone + +# Setup +./scripts/setup.sh + +# Build native libraries for Android +./scripts/build-android.sh + +# Open android/ in Android Studio +``` + +=== Download LLM Model + +```bash +# Download Llama 3.2 1B Instruct (Q4_K_M, ~700MB) +# From: https://huggingface.co/bartowski/Llama-3.2-1B-Instruct-GGUF + +# Push to device +adb push llama-3.2-1b-instruct-q4_k_m.gguf /data/local/tmp/ +``` + +=== Configure + +Set Claude API key (for cloud fallback): + +```bash +export ANTHROPIC_API_KEY="your-api-key" +``` + +Or in `config/default.toml`: + +```toml +[claude] +api_key = "your-api-key" +model = "claude-sonnet-4-20250514" + +[llm] +model_path = "/data/local/tmp/llama-3.2-1b-q4_k_m.gguf" +n_threads = 4 +context_size = 2048 +``` + +== Development + +```bash +# Run tests +cargo test + +# Build for Android +./scripts/build-android.sh + +# Generate docs +cargo doc --open +``` diff --git a/docs/installation.adoc b/docs/installation.adoc new file mode 100644 index 0000000..0a6cd09 --- /dev/null +++ b/docs/installation.adoc @@ -0,0 +1,113 @@ +// SPDX-License-Identifier: PMPL-1.0-or-later += Installing NeuroPhone +:toc: + +[[ai-install]] +== AI-Assisted Installation (Recommended) + +=== Just Say It + +**You don't need to read this README.** Just say this to any AI assistant: + +[source,text] +---- +Set up NeuroPhone on my Android from https://github.com/hyperpolymath/neurophone +---- + +**That's it. You don't type commands, install packages, or configure anything.** The AI fetches this repo, reads the installation guide inside it, figures out your device, and does everything. You just answer a few questions and confirm the privacy notice. + +The URL is the key -- it points the AI to this repo where `docs/AI_INSTALLATION_GUIDE.adoc` contains the complete step-by-step recipe. Any AI that can read a URL and run commands (or generate commands for you to paste) can do this. + +The AI handles all of this automatically: + +* Checking your device and storage +* Installing Termux (if needed), Rust, Git, and dependencies +* Cloning and building NeuroPhone for your specific hardware +* Downloading the right LLM model for your device's RAM/storage +* Creating your configuration with sensible defaults +* Running the setup wizard +* Giving you a working NeuroPhone + +=== Other Ways to Say It + +If your AI already knows about NeuroPhone (e.g. it can search the web), even shorter versions work: + +* "Make my phone a NeuroPhone" +* "Install NeuroPhone on my Android" +* "Turn my Oppo Reno 13 into a NeuroPhone" + +If it doesn't know the project, just include the URL: + +* "Set up https://github.com/hyperpolymath/neurophone on my phone" +* "I want neurosymbolic AI on my phone -- install from https://github.com/hyperpolymath/neurophone" + +=== What You'll Be Asked + +Your AI will ask you: + +1. **What device?** (so it picks the right thread count and model size) +2. **Privacy confirmation** -- what sensors are used and how data stays on-device +3. **Cloud fallback?** (optional Claude API for complex queries -- default is local-only) + +That's it. Everything else is automatic. No package managers, no build flags, no config files. + +=== Privacy & Security Notice + +[IMPORTANT] +==== +**What NeuroPhone does:** + +* Reads phone sensors (accelerometer, gyroscope, magnetometer, light, proximity) +* Processes everything on-device using Rust neural networks + local Llama LLM +* Stores neural states locally in `~/.local/share/neurophone/` (never uploaded) +* Optionally uses Claude API for complex queries (you control this) + +**What NeuroPhone does NOT do:** + +* Upload sensor data to any server (unless you enable cloud fallback) +* Track you or collect analytics +* Access camera, microphone, contacts, or personal data + +**You control everything:** cloud fallback toggle, all config in `~/.config/neurophone/`, uninstall anytime. +==== + +=== After Install + +Once your AI finishes setup, just use it: + +[source,bash] +---- +neurophone # Start NeuroPhone +neurophone query "What am I doing right now?" # Ask a question +neurophone status # Check system status +---- + +=== Uninstall + +Tell your AI: "Uninstall NeuroPhone from my phone" + +=== Troubleshooting + +Tell your AI what went wrong -- it can read the troubleshooting docs in this repo. Common issues: + +[cols="1,3"] +|=== +|Problem |Solution + +|"Termux not found" +|AI will guide you to install from F-Droid (NOT Google Play) + +|Build takes too long +|Normal for first build (5-10 min). AI adjusts thread count for your device. + +|"Model download failed" +|AI will try alternate download methods or suggest `adb push` from PC + +|"LSM crashes" +|Low RAM. AI will reduce model size or neuron count for your device. +|=== + +[[manual-installation]] +For manual installation without AI assistance, see link:build.adoc[Building NeuroPhone]. + +See also the complete machine-readable recipe in link:AI_INSTALLATION_GUIDE.adoc[AI_INSTALLATION_GUIDE.adoc]. diff --git a/docs/usage.adoc b/docs/usage.adoc new file mode 100644 index 0000000..3fcc50f --- /dev/null +++ b/docs/usage.adoc @@ -0,0 +1,41 @@ +// SPDX-License-Identifier: PMPL-1.0-or-later += NeuroPhone Usage +:toc: + +== Usage + +=== Kotlin API + +```kotlin +// Initialize +NativeLib.init() +NativeLib.start() + +// Query with neural context +val response = NativeLib.query("What's my current activity?", preferLocal = true) + +// Get raw neural state +val context = NativeLib.getNeuralContext() +// Returns: [NEURAL_STATE] Description: ... [/NEURAL_STATE] + +// Cleanup +NativeLib.stop() +``` + +=== Rust API + +```rust +use neurophone_core::{NeuroSymbolicSystem, SystemConfig}; + +let mut system = NeuroSymbolicSystem::with_config(config)?; +let _rx = system.start().await?; + +// Send sensor data +system.send_sensor(reading).await?; + +// Query +let response = system.query("What's happening?", true).await?; + +// Get neural context +let context = system.get_neural_context().await; +``` From a4ea2cbd61b0cb0a252356797e45949c8febbc78 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 2 Jun 2026 09:21:24 +0000 Subject: [PATCH 6/8] =?UTF-8?q?fix(deps):=20align=20rand=20to=200.9=20/=20?= =?UTF-8?q?rand=5Fdistr=20to=200.5=20=E2=80=94=20unbreak=20esn/lsm=20build?= =?UTF-8?q?=20(#85)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The workspace declared rand 0.10 + rand_distr 0.6 while the source uses the rand 0.9 API (rand::rng(), rng.random::(), rng.sample, shuffle) and ndarray-rand 0.16 pulls rand 0.9 — so two rand majors resolved and RNG method resolution failed (E0277/E0599). Pinning to rand 0.9 / rand_distr 0.5 yields a single rand version. `cargo check --workspace` is now green. https://claude.ai/code/session_01Gu1JFCZHuBtBhAWPr4sMQw --- Cargo.lock | 74 ++++++++++-------------------------------------------- Cargo.toml | 4 +-- 2 files changed, 15 insertions(+), 63 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c6f4eec..8ebfe5e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -144,7 +144,7 @@ dependencies = [ "ndarray", "ndarray-rand", "proptest", - "rand 0.10.1", + "rand", "serde", "serde_json", "thiserror 2.0.18", @@ -199,17 +199,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" -[[package]] -name = "chacha20" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f8d983286843e49675a4b7a2d174efe136dc93a18d69130dd18198a6c167601" -dependencies = [ - "cfg-if", - "cpufeatures", - "rand_core 0.10.1", -] - [[package]] name = "chrono" version = "0.4.44" @@ -327,15 +316,6 @@ version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" -[[package]] -name = "cpufeatures" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201" -dependencies = [ - "libc", -] - [[package]] name = "criterion" version = "0.8.2" @@ -460,8 +440,8 @@ dependencies = [ "ndarray", "ndarray-rand", "proptest", - "rand 0.10.1", - "rand_distr 0.6.0", + "rand", + "rand_distr", "rayon", "serde", "thiserror 2.0.18", @@ -631,7 +611,6 @@ dependencies = [ "cfg-if", "libc", "r-efi 6.0.0", - "rand_core 0.10.1", "wasip2", "wasip3", ] @@ -1118,8 +1097,8 @@ dependencies = [ "criterion", "ndarray", "ndarray-rand", - "rand 0.10.1", - "rand_distr 0.6.0", + "rand", + "rand_distr", "rayon", "serde", "thiserror 2.0.18", @@ -1186,8 +1165,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "180f724d496e84764e8ecf28fbe1da74ef231ec4ba15be65a9100be8445d73e3" dependencies = [ "ndarray", - "rand 0.9.4", - "rand_distr 0.5.1", + "rand", + "rand_distr", ] [[package]] @@ -1420,7 +1399,7 @@ dependencies = [ "bit-vec", "bitflags", "num-traits", - "rand 0.9.4", + "rand", "rand_chacha", "rand_xorshift", "regex-syntax", @@ -1465,7 +1444,7 @@ dependencies = [ "bytes", "getrandom 0.3.4", "lru-slab", - "rand 0.9.4", + "rand", "ring", "rustc-hash", "rustls", @@ -1519,18 +1498,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" dependencies = [ "rand_chacha", - "rand_core 0.9.5", -] - -[[package]] -name = "rand" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2e8e8bcc7961af1fdac401278c6a831614941f6164ee3bf4ce61b7edb162207" -dependencies = [ - "chacha20", - "getrandom 0.4.2", - "rand_core 0.10.1", + "rand_core", ] [[package]] @@ -1540,7 +1508,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" dependencies = [ "ppv-lite86", - "rand_core 0.9.5", + "rand_core", ] [[package]] @@ -1552,12 +1520,6 @@ dependencies = [ "getrandom 0.3.4", ] -[[package]] -name = "rand_core" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" - [[package]] name = "rand_distr" version = "0.5.1" @@ -1565,17 +1527,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8615d50dcf34fa31f7ab52692afec947c4dd0ab803cc87cb3b0b4570ff7463" dependencies = [ "num-traits", - "rand 0.9.4", -] - -[[package]] -name = "rand_distr" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d431c2703ccf129de4d45253c03f49ebb22b97d6ad79ee3ecfc7e3f4862c1d8" -dependencies = [ - "num-traits", - "rand 0.10.1", + "rand", ] [[package]] @@ -1584,7 +1536,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a" dependencies = [ - "rand_core 0.9.5", + "rand_core", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 06a9d07..eaed48a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,8 +22,8 @@ repository = "https://github.com/hyperpolymath/neurophone" # Core neural network ndarray = { version = "0.17", features = ["rayon", "serde"] } ndarray-rand = "0.16" -rand = "0.10" -rand_distr = "0.6" +rand = "0.9" +rand_distr = "0.5" rayon = "1.12" # Serialization From 91b727a59f89c452622cf43e33025de1079a0043 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 2 Jun 2026 09:49:02 +0000 Subject: [PATCH 7/8] chore(license): revert to MPL-2.0 (estate standard; reverses PR #81) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR #81 had converged the repo on PMPL-1.0-or-later, but the estate standard is MPL-2.0 (cf. the earlier #72 migration and the local SPDX hook). Revert uniformly: - SPDX-License-Identifier PMPL-1.0-or-later -> MPL-2.0 across ~140 files - root LICENSE: Palimpsest text -> MPL-2.0 text (recovered from a4f90c6) - LICENSES/: restore MPL-2.0.txt - Cargo.toml license = MPL-2.0; NOTICE rewritten to a clean MPL-2.0 notice - 0-AI-MANIFEST + proofs/ headers -> MPL-2.0 "Palimpsest" as the ecosystem/governance brand (contractiles etc.) is left intact — only the licence identifier changed. Left for maintainer decision (not deleted): PALIMPSEST.adoc (PMPL-adoption doc) and LICENSES/PMPL-1.0-or-later.txt. https://claude.ai/code/session_01Gu1JFCZHuBtBhAWPr4sMQw --- .gitattributes | 2 +- .github/FUNDING.yml | 2 +- .github/dependabot.yml | 2 +- .github/workflows/boj-build.yml | 2 +- .github/workflows/cargo-audit.yml | 2 +- .github/workflows/casket-pages.yml | 2 +- .github/workflows/cflite_batch.yml | 2 +- .github/workflows/cflite_pr.yml | 2 +- .github/workflows/codeql.yml | 2 +- .github/workflows/dependabot-automerge.yml | 2 +- .github/workflows/dogfood-gate.yml | 2 +- .github/workflows/governance.yml | 2 +- .github/workflows/hypatia-scan.yml | 2 +- .github/workflows/instant-sync.yml | 2 +- .github/workflows/language-policy.yml | 2 +- .github/workflows/mirror.yml | 2 +- .github/workflows/rust-ci.yml | 2 +- .github/workflows/scorecard-enforcer.yml | 2 +- .github/workflows/scorecard.yml | 2 +- .github/workflows/secret-scanner.yml | 2 +- .github/workflows/workflow-linter.yml | 2 +- .gitignore | 2 +- .machine_readable/6a2/AGENTIC.a2ml | 4 +- .machine_readable/6a2/ECOSYSTEM.a2ml | 2 +- .machine_readable/6a2/META.a2ml | 4 +- .machine_readable/6a2/NEUROSYM.a2ml | 2 +- .machine_readable/6a2/PLAYBOOK.a2ml | 2 +- .machine_readable/6a2/STATE.a2ml | 2 +- .machine_readable/ADJUST.contractile | 2 +- .machine_readable/CLADE.a2ml | 2 +- .machine_readable/INTENT.contractile | 2 +- .machine_readable/MUST.contractile | 2 +- .machine_readable/TRUST.contractile | 2 +- .../agent_instructions/README.adoc | 2 +- .../agent_instructions/coverage.a2ml | 2 +- .../agent_instructions/debt.a2ml | 2 +- .../agent_instructions/methodology.a2ml | 2 +- .../contractiles/bust/Bustfile.a2ml | 2 +- .machine_readable/contractiles/bust/bust.ncl | 2 +- .../contractiles/dust/Dustfile.a2ml | 2 +- .../contractiles/trust/Trustfile.a2ml | 2 +- .../integrations/feedback-o-tron.a2ml | 2 +- .machine_readable/integrations/proven.a2ml | 2 +- .machine_readable/integrations/verisimdb.a2ml | 2 +- .machine_readable/integrations/vexometer.a2ml | 2 +- .well-known/ai.txt | 5 +- .well-known/humans.txt | 4 +- .well-known/security.txt | 2 +- 0-AI-MANIFEST.a2ml | 4 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- CONTRIBUTING.adoc | 2 +- Cargo.toml | 2 +- EXPLAINME.adoc | 2 +- LICENSE | 495 +++++++++++++----- LICENSES/MPL-2.0.txt | 373 +++++++++++++ MAINTAINERS.adoc | 2 +- Mustfile | 2 +- NOTICE | 10 +- QUICKSTART-DEV.adoc | 2 +- QUICKSTART-MAINTAINER.adoc | 4 +- QUICKSTART-USER.adoc | 2 +- README.adoc | 6 +- SECURITY.md | 2 +- TESTING-REPORT.adoc | 2 +- TESTING-REPORT.scm | 2 +- TOPOLOGY.md | 2 +- android/app/src/main/AndroidManifest.xml | 2 +- .../main/java/ai/neurophone/BootReceiver.kt | 2 +- .../main/java/ai/neurophone/MainActivity.kt | 2 +- .../src/main/java/ai/neurophone/NativeLib.kt | 2 +- .../java/ai/neurophone/NeurophoneService.kt | 2 +- .../neurophone/widget/NeurophoneAppWidget.kt | 2 +- .../widget/NeurophoneWidgetActions.kt | 2 +- .../NeurophoneWidgetConfigureActivity.kt | 2 +- .../src/main/res/drawable/ic_widget_power.xml | 2 +- .../main/res/drawable/ic_widget_refresh.xml | 2 +- .../main/res/drawable/widget_background.xml | 2 +- .../src/main/res/drawable/widget_preview.xml | 2 +- .../src/main/res/layout/widget_neurophone.xml | 2 +- android/app/src/main/res/values/strings.xml | 2 +- .../main/res/xml/neurophone_widget_info.xml | 2 +- contractile.just | 2 +- contractiles/intend/Intentfile.a2ml | 4 +- contractiles/must/Mustfile.a2ml | 2 +- contractiles/trust/Trustfile.a2ml | 2 +- crates/bridge/benches/bridge_bench.rs | 2 +- crates/bridge/src/lib.rs | 2 +- crates/bridge/tests/aspect_lifecycle.rs | 2 +- crates/bridge/tests/integration_encode.rs | 2 +- crates/claude-client/benches/claude_bench.rs | 2 +- crates/claude-client/src/lib.rs | 2 +- .../tests/integration_routing.rs | 2 +- crates/esn/benches/esn_bench.rs | 2 +- crates/esn/src/lib.rs | 2 +- crates/esn/tests/integration_esn.rs | 2 +- crates/llm/benches/llm_bench.rs | 2 +- crates/llm/src/lib.rs | 2 +- crates/llm/tests/integration_backend.rs | 2 +- crates/lsm/benches/lsm_bench.rs | 2 +- crates/lsm/src/lib.rs | 2 +- crates/lsm/tests/integration_lsm.rs | 2 +- crates/neurophone-android/src/lib.rs | 2 +- .../benches/neurophone_bench.rs | 2 +- .../neurophone-core/benches/pipeline_bench.rs | 2 +- crates/neurophone-core/src/lib.rs | 2 +- .../tests/aspect_concurrency.rs | 2 +- .../tests/integration_pipeline.rs | 2 +- crates/neurophone-core/tests/lifecycle.rs | 2 +- crates/neurophone-core/tests/property_test.rs | 2 +- crates/sensors/benches/sensors_bench.rs | 2 +- crates/sensors/src/lib.rs | 2 +- crates/sensors/tests/aspect_lifecycle.rs | 2 +- crates/sensors/tests/integration_pipeline.rs | 2 +- docs/AI_INSTALLATION_GUIDE.adoc | 4 +- docs/BT-PRESENCE-PLAN.adoc | 2 +- docs/CITATIONS.adoc | 2 +- docs/OS_INTEGRATION.adoc | 2 +- docs/architecture.adoc | 2 +- docs/build.adoc | 2 +- docs/governance/CRG-AUDIT-2026-04-18.adoc | 10 +- docs/installation.adoc | 2 +- docs/tech-debt-2026-05-26.md | 8 +- docs/usage.adoc | 2 +- guix.scm | 4 +- hooks/validate-codeql.sh | 2 +- hooks/validate-permissions.sh | 2 +- hooks/validate-sha-pins.sh | 2 +- hooks/validate-spdx.sh | 4 +- k9iser.toml | 2 +- llm-warmup-dev.md | 2 +- llm-warmup-user.md | 2 +- proofs/README.adoc | 2 +- proofs/dafny/README.adoc | 2 +- proofs/lean/README.adoc | 2 +- proofs/tla/Lifecycle.tla | 2 +- scripts/install-on-phone.sh | 2 +- scripts/install-termux.sh | 2 +- scripts/start-on-boot.sh | 2 +- scripts/uninstall.sh | 2 +- setup.sh | 4 +- stapeln.toml | 4 +- 142 files changed, 892 insertions(+), 307 deletions(-) create mode 100644 LICENSES/MPL-2.0.txt diff --git a/.gitattributes b/.gitattributes index bb56184..e860a85 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 # RSR-compliant .gitattributes * text=auto eol=lf diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index fd9bb96..688a442 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 # Funding platforms for hyperpolymath projects # See: https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/displaying-a-sponsor-button-in-your-repository diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 4c78044..47acb8d 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 version: 2 updates: - package-ecosystem: "cargo" diff --git a/.github/workflows/boj-build.yml b/.github/workflows/boj-build.yml index ddeab5d..712beb3 100644 --- a/.github/workflows/boj-build.yml +++ b/.github/workflows/boj-build.yml @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 name: BoJ Server Build Trigger on: push: diff --git a/.github/workflows/cargo-audit.yml b/.github/workflows/cargo-audit.yml index ae3236d..ca42f96 100644 --- a/.github/workflows/cargo-audit.yml +++ b/.github/workflows/cargo-audit.yml @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 # Prevention workflow - audits Rust dependencies for vulnerabilities name: Cargo Audit diff --git a/.github/workflows/casket-pages.yml b/.github/workflows/casket-pages.yml index dee6a46..1839b7b 100644 --- a/.github/workflows/casket-pages.yml +++ b/.github/workflows/casket-pages.yml @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 name: GitHub Pages on: diff --git a/.github/workflows/cflite_batch.yml b/.github/workflows/cflite_batch.yml index 6d3e8a2..1d86ae4 100644 --- a/.github/workflows/cflite_batch.yml +++ b/.github/workflows/cflite_batch.yml @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 name: ClusterFuzzLite Batch Fuzzing on: schedule: diff --git a/.github/workflows/cflite_pr.yml b/.github/workflows/cflite_pr.yml index d0dea85..fce52c1 100644 --- a/.github/workflows/cflite_pr.yml +++ b/.github/workflows/cflite_pr.yml @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 name: ClusterFuzzLite PR Fuzzing on: pull_request: diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index c902a3d..bd9f275 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 name: CodeQL Security Analysis on: diff --git a/.github/workflows/dependabot-automerge.yml b/.github/workflows/dependabot-automerge.yml index be5c67f..ca86baa 100644 --- a/.github/workflows/dependabot-automerge.yml +++ b/.github/workflows/dependabot-automerge.yml @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 # # dependabot-automerge.yml — enable GitHub's native auto-merge on # Dependabot pull requests that match a declared severity / ecosystem diff --git a/.github/workflows/dogfood-gate.yml b/.github/workflows/dogfood-gate.yml index a9f04c1..29f0d7f 100644 --- a/.github/workflows/dogfood-gate.yml +++ b/.github/workflows/dogfood-gate.yml @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 # Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) # # dogfood-gate.yml — Hyperpolymath Dogfooding Quality Gate diff --git a/.github/workflows/governance.yml b/.github/workflows/governance.yml index 4bb50e9..653ef98 100644 --- a/.github/workflows/governance.yml +++ b/.github/workflows/governance.yml @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 # governance.yml — single wrapper calling the shared estate governance bundle # in hyperpolymath/standards instead of carrying per-repo copies. # diff --git a/.github/workflows/hypatia-scan.yml b/.github/workflows/hypatia-scan.yml index 29f6f39..1d6417e 100644 --- a/.github/workflows/hypatia-scan.yml +++ b/.github/workflows/hypatia-scan.yml @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 # Thin wrapper around hyperpolymath/standards hypatia-scan-reusable.yml. # See standards#191 for the reusable's purpose and design. diff --git a/.github/workflows/instant-sync.yml b/.github/workflows/instant-sync.yml index e900c7e..228dc43 100644 --- a/.github/workflows/instant-sync.yml +++ b/.github/workflows/instant-sync.yml @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 # Instant Forge Sync - Triggers propagation to all forges on push/release name: Instant Sync diff --git a/.github/workflows/language-policy.yml b/.github/workflows/language-policy.yml index 2332211..b706bf7 100644 --- a/.github/workflows/language-policy.yml +++ b/.github/workflows/language-policy.yml @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 name: Language Policy Enforcement on: diff --git a/.github/workflows/mirror.yml b/.github/workflows/mirror.yml index a91c5ec..2083ca6 100644 --- a/.github/workflows/mirror.yml +++ b/.github/workflows/mirror.yml @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 name: Mirror to Git Forges on: diff --git a/.github/workflows/rust-ci.yml b/.github/workflows/rust-ci.yml index 983c6d2..9ab8801 100644 --- a/.github/workflows/rust-ci.yml +++ b/.github/workflows/rust-ci.yml @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 # Rust CI — thin wrapper calling the shared estate reusable in # hyperpolymath/standards. Configure once, propagate everywhere. # See: docs/CI-REUSABLE-WORKFLOWS.adoc in standards. diff --git a/.github/workflows/scorecard-enforcer.yml b/.github/workflows/scorecard-enforcer.yml index af0bef8..295e009 100644 --- a/.github/workflows/scorecard-enforcer.yml +++ b/.github/workflows/scorecard-enforcer.yml @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 # Prevention workflow - runs OpenSSF Scorecard and fails on low scores name: OpenSSF Scorecard Enforcer diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 969ad71..f99d361 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 name: Scorecards supply-chain security on: diff --git a/.github/workflows/secret-scanner.yml b/.github/workflows/secret-scanner.yml index 2ec6ac7..097d2af 100644 --- a/.github/workflows/secret-scanner.yml +++ b/.github/workflows/secret-scanner.yml @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 name: Secret Scanner on: diff --git a/.github/workflows/workflow-linter.yml b/.github/workflows/workflow-linter.yml index b5ba94d..02b2e76 100644 --- a/.github/workflows/workflow-linter.yml +++ b/.github/workflows/workflow-linter.yml @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 # Prevention workflow - validates all workflows have proper security config name: Workflow Security Linter diff --git a/.gitignore b/.gitignore index c507f2b..2813e1e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 # RSR-compliant .gitignore # OS & Editor diff --git a/.machine_readable/6a2/AGENTIC.a2ml b/.machine_readable/6a2/AGENTIC.a2ml index 09aa2c2..9931a7a 100644 --- a/.machine_readable/6a2/AGENTIC.a2ml +++ b/.machine_readable/6a2/AGENTIC.a2ml @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 # Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) # # AGENTIC.a2ml — AI agent constraints and capabilities @@ -21,4 +21,4 @@ can-create-files = true # - Never commit secrets or credentials # - Never use banned languages (TypeScript, Python, Go, etc.) # - Never place state files in repository root (must be in .machine_readable/) -# - Never use AGPL license (use PMPL-1.0-or-later) +# - Never use AGPL license (use MPL-2.0) diff --git a/.machine_readable/6a2/ECOSYSTEM.a2ml b/.machine_readable/6a2/ECOSYSTEM.a2ml index 526ecd9..d0013d8 100644 --- a/.machine_readable/6a2/ECOSYSTEM.a2ml +++ b/.machine_readable/6a2/ECOSYSTEM.a2ml @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 # ECOSYSTEM.a2ml — Ecosystem position # Converted from ECOSYSTEM.scm on 2026-03-15 diff --git a/.machine_readable/6a2/META.a2ml b/.machine_readable/6a2/META.a2ml index 3d59aac..c94dba1 100644 --- a/.machine_readable/6a2/META.a2ml +++ b/.machine_readable/6a2/META.a2ml @@ -1,9 +1,9 @@ -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 # META.a2ml — Project meta-information # Converted from META.scm on 2026-03-15 [metadata] project = "neurophone" author = "Jonathan D.A. Jewell " -license = "PMPL-1.0-or-later" +license = "MPL-2.0" standard = "RSR 2026" diff --git a/.machine_readable/6a2/NEUROSYM.a2ml b/.machine_readable/6a2/NEUROSYM.a2ml index ce0c930..767d7dd 100644 --- a/.machine_readable/6a2/NEUROSYM.a2ml +++ b/.machine_readable/6a2/NEUROSYM.a2ml @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 # Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) # # NEUROSYM.a2ml — Neurosymbolic integration metadata diff --git a/.machine_readable/6a2/PLAYBOOK.a2ml b/.machine_readable/6a2/PLAYBOOK.a2ml index 02c3acb..a961250 100644 --- a/.machine_readable/6a2/PLAYBOOK.a2ml +++ b/.machine_readable/6a2/PLAYBOOK.a2ml @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 # Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) # # PLAYBOOK.a2ml — Operational playbook diff --git a/.machine_readable/6a2/STATE.a2ml b/.machine_readable/6a2/STATE.a2ml index 950dd86..a29c0ea 100644 --- a/.machine_readable/6a2/STATE.a2ml +++ b/.machine_readable/6a2/STATE.a2ml @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 # STATE.a2ml — Project state checkpoint # Updated 2026-04-04 — CRG C grade achieved diff --git a/.machine_readable/ADJUST.contractile b/.machine_readable/ADJUST.contractile index 1ad7ffe..54d7cb7 100644 --- a/.machine_readable/ADJUST.contractile +++ b/.machine_readable/ADJUST.contractile @@ -1,4 +1,4 @@ -; SPDX-License-Identifier: PMPL-1.0-or-later +; SPDX-License-Identifier: MPL-2.0 ; ADJUST.contractile — Accessibility invariants for neurophone ; "ADJUST" = Accessibility & Digital Justice for Universal Software & Technology ; diff --git a/.machine_readable/CLADE.a2ml b/.machine_readable/CLADE.a2ml index 6ef604b..898f21b 100644 --- a/.machine_readable/CLADE.a2ml +++ b/.machine_readable/CLADE.a2ml @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 # Clade declaration — part of the gv-clade-index registry # See: https://github.com/hyperpolymath/gv-clade-index diff --git a/.machine_readable/INTENT.contractile b/.machine_readable/INTENT.contractile index 8eb53ca..c2e6a6a 100644 --- a/.machine_readable/INTENT.contractile +++ b/.machine_readable/INTENT.contractile @@ -1,4 +1,4 @@ -; SPDX-License-Identifier: PMPL-1.0-or-later +; SPDX-License-Identifier: MPL-2.0 ; INTENT.contractile — Purpose and scope for neurophone ; Helps LLM/SLM agents understand what this repo IS and IS NOT. ; diff --git a/.machine_readable/MUST.contractile b/.machine_readable/MUST.contractile index 3331ab9..a1a075c 100644 --- a/.machine_readable/MUST.contractile +++ b/.machine_readable/MUST.contractile @@ -1,4 +1,4 @@ -; SPDX-License-Identifier: PMPL-1.0-or-later +; SPDX-License-Identifier: MPL-2.0 ; MUST.contractile — Baseline invariants for neurophone ; These constraints MUST NOT be violated. K9 validators enforce them. ; diff --git a/.machine_readable/TRUST.contractile b/.machine_readable/TRUST.contractile index a08007a..afc8d00 100644 --- a/.machine_readable/TRUST.contractile +++ b/.machine_readable/TRUST.contractile @@ -1,4 +1,4 @@ -; SPDX-License-Identifier: PMPL-1.0-or-later +; SPDX-License-Identifier: MPL-2.0 ; TRUST.contractile — Trust boundaries for neurophone ; Defines what LLM/SLM agents are trusted to do without asking. ; diff --git a/.machine_readable/agent_instructions/README.adoc b/.machine_readable/agent_instructions/README.adoc index 0ed360b..9bc2e24 100644 --- a/.machine_readable/agent_instructions/README.adoc +++ b/.machine_readable/agent_instructions/README.adoc @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-License-Identifier: MPL-2.0 // Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) = Agent Instructions :toc: preamble diff --git a/.machine_readable/agent_instructions/coverage.a2ml b/.machine_readable/agent_instructions/coverage.a2ml index 3d720dc..6979664 100644 --- a/.machine_readable/agent_instructions/coverage.a2ml +++ b/.machine_readable/agent_instructions/coverage.a2ml @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 # Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) # # coverage.a2ml — Session coverage tracking diff --git a/.machine_readable/agent_instructions/debt.a2ml b/.machine_readable/agent_instructions/debt.a2ml index f46451a..c0238c5 100644 --- a/.machine_readable/agent_instructions/debt.a2ml +++ b/.machine_readable/agent_instructions/debt.a2ml @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 # Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) # # debt.a2ml — Meander debt list diff --git a/.machine_readable/agent_instructions/methodology.a2ml b/.machine_readable/agent_instructions/methodology.a2ml index 9bf1439..754f357 100644 --- a/.machine_readable/agent_instructions/methodology.a2ml +++ b/.machine_readable/agent_instructions/methodology.a2ml @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 # Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) # # methodology.a2ml — AI agent methodology configuration diff --git a/.machine_readable/contractiles/bust/Bustfile.a2ml b/.machine_readable/contractiles/bust/Bustfile.a2ml index e69104a..874bfa1 100644 --- a/.machine_readable/contractiles/bust/Bustfile.a2ml +++ b/.machine_readable/contractiles/bust/Bustfile.a2ml @@ -1,5 +1,5 @@ // Bustfile.a2ml — meta-repo bust contractile (breakage / rollback) -// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-License-Identifier: MPL-2.0 Bust { name: "neurophone" diff --git a/.machine_readable/contractiles/bust/bust.ncl b/.machine_readable/contractiles/bust/bust.ncl index 3d9ab8b..fc8cb8c 100644 --- a/.machine_readable/contractiles/bust/bust.ncl +++ b/.machine_readable/contractiles/bust/bust.ncl @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 # Bust — error-handling / failure-recovery runner # # Pairs with: Bustfile.a2ml (same directory) diff --git a/.machine_readable/contractiles/dust/Dustfile.a2ml b/.machine_readable/contractiles/dust/Dustfile.a2ml index d7dfc19..0d619ee 100644 --- a/.machine_readable/contractiles/dust/Dustfile.a2ml +++ b/.machine_readable/contractiles/dust/Dustfile.a2ml @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 # Dustfile — Cleanup and Hygiene Contract [dustfile] diff --git a/.machine_readable/contractiles/trust/Trustfile.a2ml b/.machine_readable/contractiles/trust/Trustfile.a2ml index 6f2c39c..0c95e15 100644 --- a/.machine_readable/contractiles/trust/Trustfile.a2ml +++ b/.machine_readable/contractiles/trust/Trustfile.a2ml @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 # Trustfile — Integrity and Provenance Contract [trustfile] diff --git a/.machine_readable/integrations/feedback-o-tron.a2ml b/.machine_readable/integrations/feedback-o-tron.a2ml index 1c473ae..5381604 100644 --- a/.machine_readable/integrations/feedback-o-tron.a2ml +++ b/.machine_readable/integrations/feedback-o-tron.a2ml @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 # Feedback-o-Tron Integration — Autonomous Bug Reporting [integration] diff --git a/.machine_readable/integrations/proven.a2ml b/.machine_readable/integrations/proven.a2ml index 6b3e805..9af33ff 100644 --- a/.machine_readable/integrations/proven.a2ml +++ b/.machine_readable/integrations/proven.a2ml @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 # Proven Integration — Formally Verified Safety Library [integration] diff --git a/.machine_readable/integrations/verisimdb.a2ml b/.machine_readable/integrations/verisimdb.a2ml index 2c8f8f5..164c522 100644 --- a/.machine_readable/integrations/verisimdb.a2ml +++ b/.machine_readable/integrations/verisimdb.a2ml @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 # VeriSimDB Feed — Cross-Repo Analytics Data Store [integration] diff --git a/.machine_readable/integrations/vexometer.a2ml b/.machine_readable/integrations/vexometer.a2ml index bb7fc43..238b3d2 100644 --- a/.machine_readable/integrations/vexometer.a2ml +++ b/.machine_readable/integrations/vexometer.a2ml @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 # Vexometer Integration — Irritation Surface Analysis [integration] diff --git a/.well-known/ai.txt b/.well-known/ai.txt index 6668d66..d278c10 100644 --- a/.well-known/ai.txt +++ b/.well-known/ai.txt @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 # ai.txt - AI interaction policy # See: https://site.spawning.ai/spawning-ai-txt @@ -7,10 +7,9 @@ Disallow-Training: yes Disallow-Summarization: no Disallow-Generation: yes -# This project's code is licensed under PMPL-1.0-or-later. +# This project's code is licensed under MPL-2.0. # AI agents may read and analyze this code for assisting contributors. # AI agents must NOT use this code for model training without explicit consent. -# AI agents must preserve Emotional Lineage per PMPL Section 3. # # For AI agent integration instructions, see: # 0-AI-MANIFEST.a2ml (universal AI entry point) diff --git a/.well-known/humans.txt b/.well-known/humans.txt index a558f15..5b6216d 100644 --- a/.well-known/humans.txt +++ b/.well-known/humans.txt @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 # humanstxt.org /* TEAM */ @@ -9,6 +9,6 @@ From: United Kingdom /* SITE */ Last update: 2026-03-28 Standards: RSR (Rhodium Standard Repository) -License: PMPL-1.0-or-later (Palimpsest MPL) +License: MPL-2.0 (Palimpsest MPL) Components: Idris2 ABI, Zig FFI Tools: just, Podman, Guix diff --git a/.well-known/security.txt b/.well-known/security.txt index c93da65..7847d02 100644 --- a/.well-known/security.txt +++ b/.well-known/security.txt @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 # RFC 9116 - security.txt # https://securitytxt.org/ diff --git a/0-AI-MANIFEST.a2ml b/0-AI-MANIFEST.a2ml index b29e53f..315b90d 100644 --- a/0-AI-MANIFEST.a2ml +++ b/0-AI-MANIFEST.a2ml @@ -43,7 +43,7 @@ Bot-specific instructions for: 1. **No SCM duplication** - Root must NOT contain .machine_readable/6a2/STATE.a2ml, .machine_readable/6a2/META.a2ml, etc. 2. **Single source of truth** - `.machine_readable/` is authoritative 3. **No stale metadata** - If root SCMs exist, they are OUT OF DATE -4. **License consistency** - All code PMPL-1.0-or-later +4. **License consistency** - All code MPL-2.0 5. **Author attribution** - Always "Jonathan D.A. Jewell " ## REPOSITORY STRUCTURE @@ -112,5 +112,5 @@ After reading this file, demonstrate understanding by stating: - **Format Version:** 1.0.0 - **Created:** [DATE] - **Maintained By:** [YOUR-NAME/ORG] -- **License:** PMPL-1.0-or-later +- **License:** MPL-2.0 - **Protocol:** https://github.com/hyperpolymath/0-ai-gatekeeper-protocol diff --git a/CHANGELOG.md b/CHANGELOG.md index 94741e4..2b432c7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,5 @@ diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index c32021a..1f1548c 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -1,4 +1,4 @@ - + # Contributor Covenant Code of Conduct ## Our Pledge diff --git a/CONTRIBUTING.adoc b/CONTRIBUTING.adoc index c73e96f..1f34e60 100644 --- a/CONTRIBUTING.adoc +++ b/CONTRIBUTING.adoc @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-License-Identifier: MPL-2.0 = Contributing Guide == Getting Started diff --git a/Cargo.toml b/Cargo.toml index eaed48a..60e022f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,7 +14,7 @@ members = [ [workspace.package] version = "1.0.0" edition = "2021" -license = "PMPL-1.0-or-later" +license = "MPL-2.0" authors = ["Jonathan D.A. Jewell "] repository = "https://github.com/hyperpolymath/neurophone" diff --git a/EXPLAINME.adoc b/EXPLAINME.adoc index e5a12fa..b6f7618 100644 --- a/EXPLAINME.adoc +++ b/EXPLAINME.adoc @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-License-Identifier: MPL-2.0 // SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell = NeuroPhone — Neurosymbolic AI Android Application — Show Me The Receipts :toc: diff --git a/LICENSE b/LICENSE index f639385..2a8b960 100644 --- a/LICENSE +++ b/LICENSE @@ -1,162 +1,375 @@ -SPDX-License-Identifier: PMPL-1.0-or-later -SPDX-FileCopyrightText: 2025 Palimpsest Stewardship Council - -================================================================================ -PALIMPSEST-MPL LICENSE VERSION 1.0 -================================================================================ +SPDX-License-Identifier: MPL-2.0 -File-level copyleft with ethical use and quantum-safe provenance - -Based on Mozilla Public License 2.0 +Mozilla Public License Version 2.0 +================================== --------------------------------------------------------------------------------- -PREAMBLE --------------------------------------------------------------------------------- +1. Definitions +-------------- -This License extends the Mozilla Public License 2.0 (MPL-2.0) with provisions -for ethical use, post-quantum cryptographic provenance, and emotional lineage -protection. The base MPL-2.0 terms apply except where explicitly modified by -the Exhibits below. - -Like a palimpsest manuscript where each layer builds upon what came before, -this license recognizes that creative works carry history, context, and meaning -that transcend mere code or text. - --------------------------------------------------------------------------------- -SECTION 1: BASE LICENSE --------------------------------------------------------------------------------- - -This License incorporates the full text of Mozilla Public License 2.0 by -reference. The complete MPL-2.0 text is available at: -https://www.mozilla.org/en-US/MPL/2.0/ - -All terms, conditions, and definitions from MPL-2.0 apply except where -explicitly modified by the Exhibits in this License. +1.1. "Contributor" + means each individual or legal entity that creates, contributes to + the creation of, or owns Covered Software. --------------------------------------------------------------------------------- -SECTION 2: ADDITIONAL DEFINITIONS --------------------------------------------------------------------------------- +1.2. "Contributor Version" + means the combination of the Contributions of others (if any) used + by a Contributor and that particular Contributor's Contribution. -2.1. "Emotional Lineage" - means the narrative, cultural, symbolic, and contextual meaning embedded - in Covered Software, including but not limited to: protest traditions, - cultural heritage, trauma narratives, and community stories. - -2.2. "Provenance Metadata" - means cryptographically signed attribution information attached to or - associated with Covered Software, including author identities, timestamps, - modification history, and lineage references. - -2.3. "Non-Interpretive System" - means any automated system that processes Covered Software without - preserving or considering its Emotional Lineage, including but not - limited to: AI training pipelines, content aggregators, and automated - summarization tools. +1.3. "Contribution" + means Covered Software of a particular Contributor. -2.4. "Quantum-Safe Signature" - means a cryptographic signature using algorithms resistant to attacks - by quantum computers, as specified in Exhibit B. +1.4. "Covered Software" + means Source Code Form to which the initial Contributor has attached + the notice in Exhibit A, the Executable Form of such Source Code + Form, and Modifications of such Source Code Form, in each case + including portions thereof. --------------------------------------------------------------------------------- -SECTION 3: ETHICAL USE REQUIREMENTS --------------------------------------------------------------------------------- +1.5. "Incompatible With Secondary Licenses" + means -In addition to the rights and obligations under MPL-2.0: + (a) that the initial Contributor has attached the notice described + in Exhibit B to the Covered Software; or -3.1. Emotional Lineage Preservation - You must make reasonable efforts to preserve and communicate the - Emotional Lineage of Covered Software when distributing or creating - derivative works. This includes maintaining narrative context, cultural - attributions, and symbolic meaning where documented. + (b) that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the + terms of a Secondary License. -3.2. Non-Interpretive System Notice - If You use Covered Software as input to a Non-Interpretive System, You - must: - (a) document such use in a publicly accessible manner; and - (b) not claim that outputs of such systems carry the Emotional Lineage - of the original work without explicit permission from Contributors. +1.6. "Executable Form" + means any form of the work other than Source Code Form. -3.3. Ethical Use Declaration - Commercial use of Covered Software requires acknowledgment that You have - read and understood Exhibit A (Ethical Use Guidelines) and agree to act - in good faith accordance with its principles. +1.7. "Larger Work" + means a work that combines Covered Software with other material, in + a separate file or files, that is not Covered Software. -See Exhibit A for complete Ethical Use Guidelines. +1.8. "License" + means this document. --------------------------------------------------------------------------------- -SECTION 4: PROVENANCE REQUIREMENTS --------------------------------------------------------------------------------- +1.9. "Licensable" + means having the right to grant, to the maximum extent possible, + whether at the time of the initial grant or subsequently, any and + all of the rights conveyed by this License. -4.1. Metadata Preservation - You must not strip, alter, or obscure Provenance Metadata from Covered - Software except where technically necessary and with clear documentation - of any changes. +1.10. "Modifications" + means any of the following: -4.2. Quantum-Safe Provenance (Optional) - Contributors may sign their Contributions using Quantum-Safe Signatures. - If Quantum-Safe Signatures are present, You must preserve them in all - distributions. + (a) any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered + Software; or -4.3. Lineage Chain - When creating derivative works, You should extend the provenance chain - to include Your own contributions, maintaining cryptographic linkage to - prior Contributors where feasible. + (b) any new file in Source Code Form that contains any Covered + Software. -See Exhibit B for Quantum-Safe Provenance specifications. +1.11. "Patent Claims" of a Contributor + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the + License, by the making, using, selling, offering for sale, having + made, import, or transfer of either its Contributions or its + Contributor Version. --------------------------------------------------------------------------------- -SECTION 5: GOVERNANCE --------------------------------------------------------------------------------- - -5.1. Stewardship Council - This License is maintained by the Palimpsest Stewardship Council, which - may issue clarifications, interpretive guidance, and future versions. - -5.2. Version Selection - You may use Covered Software under this version of the License or any - later version published by the Palimpsest Stewardship Council. - -5.3. Dispute Resolution - Disputes regarding interpretation of Ethical Use Requirements (Section 3) - should first be submitted to the Palimpsest Stewardship Council for - non-binding guidance before pursuing legal remedies. - --------------------------------------------------------------------------------- -SECTION 6: COMPATIBILITY --------------------------------------------------------------------------------- - -6.1. MPL-2.0 Compatibility - Covered Software under this License may be combined with software under - MPL-2.0. The combined work must comply with both licenses. - -6.2. Secondary Licenses - The Secondary License provisions of MPL-2.0 Section 3.3 apply to this - License. - --------------------------------------------------------------------------------- -EXHIBITS --------------------------------------------------------------------------------- - -Exhibit A - Ethical Use Guidelines -Exhibit B - Quantum-Safe Provenance Specification - -See separate files: -- EXHIBIT-A-ETHICAL-USE.txt -- EXHIBIT-B-QUANTUM-SAFE.txt - --------------------------------------------------------------------------------- -END OF PALIMPSEST-MPL-1.0 LICENSE TEXT --------------------------------------------------------------------------------- - -For exhibits, specifications, provenance rules, and governance: -https://github.com/hyperpolymath/palimpsest-license +1.12. "Secondary License" + means either the GNU General Public License, Version 2.0, the GNU + Lesser General Public License, Version 2.1, the GNU Affero General + Public License, Version 3.0, or any later versions of those + licenses. -For legal frameworks and jurisdictional analysis: -See /legal/frameworks/ +1.13. "Source Code Form" + means the form of the work preferred for making modifications. -For provenance and audit tooling: -See /tools/ and /spec/PROVENANCE-SPEC.adoc +1.14. "You" (or "Your") + means an individual or a legal entity exercising rights under this + License. For legal entities, "You" includes any entity that + controls, is controlled by, or is under common control with You. For + purposes of this definition, "control" means (a) the power, direct + or indirect, to cause the direction or management of such entity, + whether by contract or otherwise, or (b) ownership of more than + fifty percent (50%) of the outstanding shares or beneficial + ownership of such entity. -For questions about this License: -- Repository: https://github.com/hyperpolymath/palimpsest-license -- Council: contact via repository Issues +2. License Grants and Conditions +-------------------------------- + +2.1. Grants + +Each Contributor hereby grants You a world-wide, royalty-free, +non-exclusive license: + +(a) under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and + +(b) under Patent Claims of such Contributor to make, use, sell, offer + for sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. + +2.2. Effective Date + +The licenses granted in Section 2.1 with respect to any Contribution +become effective for each Contribution on the date the Contributor first +distributes such Contribution. + +2.3. Limitations on Grant Scope + +The licenses granted in this Section 2 are the only rights granted under +this License. No additional rights or licenses will be implied from the +distribution or licensing of Covered Software under this License. +Notwithstanding Section 2.1(b) above, no patent license is granted by a +Contributor: + +(a) for any code that a Contributor has removed from Covered Software; + or + +(b) for infringements caused by: (i) Your and any other third party's + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + +(c) under Patent Claims infringed by Covered Software in the absence of + its Contributions. + +This License does not grant any rights in the trademarks, service marks, +or logos of any Contributor (except as may be necessary to comply with +the notice requirements in Section 3.4). + +2.4. Subsequent Licenses + +No Contributor makes additional grants as a result of Your choice to +distribute the Covered Software under a subsequent version of this +License (see Section 10.2) or under the terms of a Secondary License (if +permitted under the terms of Section 3.3). + +2.5. Representation + +Each Contributor represents that the Contributor believes its +Contributions are its original creation(s) or it has sufficient rights +to grant the rights to its Contributions conveyed by this License. + +2.6. Fair Use + +This License is not intended to limit any rights You have under +applicable copyright doctrines of fair use, fair dealing, or other +equivalents. + +2.7. Conditions + +Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted +in Section 2.1. + +3. Responsibilities +------------------- + +3.1. Distribution of Source Form + +All distribution of Covered Software in Source Code Form, including any +Modifications that You create or to which You contribute, must be under +the terms of this License. You must inform recipients that the Source +Code Form of the Covered Software is governed by the terms of this +License, and how they can obtain a copy of this License. You may not +attempt to alter or restrict the recipients' rights in the Source Code +Form. + +3.2. Distribution of Executable Form + +If You distribute Covered Software in Executable Form then: + +(a) such Covered Software must also be made available in Source Code + Form, as described in Section 3.1, and You must inform recipients of + the Executable Form how they can obtain a copy of such Source Code + Form by reasonable means in a timely manner, at a charge no more + than the cost of distribution to the recipient; and + +(b) You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter + the recipients' rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + +You may create and distribute a Larger Work under terms of Your choice, +provided that You also comply with the requirements of this License for +the Covered Software. If the Larger Work is a combination of Covered +Software with a work governed by one or more Secondary Licenses, and the +Covered Software is not Incompatible With Secondary Licenses, this +License permits You to additionally distribute such Covered Software +under the terms of such Secondary License(s), so that the recipient of +the Larger Work may, at their option, further distribute the Covered +Software under the terms of either this License or such Secondary +License(s). + +3.4. Notices + +You may not remove or alter the substance of any license notices +(including copyright notices, patent notices, disclaimers of warranty, +or limitations of liability) contained within the Source Code Form of +the Covered Software, except that You may alter any license notices to +the extent required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + +You may choose to offer, and to charge a fee for, warranty, support, +indemnity or liability obligations to one or more recipients of Covered +Software. However, You may do so only on Your own behalf, and not on +behalf of any Contributor. You must make it absolutely clear that any +such warranty, support, indemnity, or liability obligation is offered by +You alone, and You hereby agree to indemnify every Contributor for any +liability incurred by such Contributor as a result of warranty, support, +indemnity or liability terms You offer. You may include additional +disclaimers of warranty and limitations of liability specific to any +jurisdiction. + +4. Inability to Comply Due to Statute or Regulation +--------------------------------------------------- + +If it is impossible for You to comply with any of the terms of this +License with respect to some or all of the Covered Software due to +statute, judicial order, or regulation then You must: (a) comply with +the terms of this License to the maximum extent possible; and (b) +describe the limitations and the code they affect. Such description must +be placed in a text file included with all distributions of the Covered +Software under this License. Except to the extent prohibited by statute +or regulation, such description must be sufficiently detailed for a +recipient of ordinary skill to be able to understand it. + +5. Termination +-------------- + +5.1. The rights granted under this License will terminate automatically +if You fail to comply with any of its terms. However, if You become +compliant, then the rights granted under this License from a particular +Contributor are reinstated (a) provisionally, unless and until such +Contributor explicitly and finally terminates Your grants, and (b) on an +ongoing basis, if such Contributor fails to notify You of the +non-compliance by some reasonable means prior to 60 days after You have +come back into compliance. Moreover, Your grants from a particular +Contributor are reinstated on an ongoing basis if such Contributor +notifies You of the non-compliance by some reasonable means, this is the +first time You have received notice of non-compliance with this License +from such Contributor, and You become compliant prior to 30 days after +Your receipt of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent +infringement claim (excluding declaratory judgment actions, +counter-claims, and cross-claims) alleging that a Contributor Version +directly or indirectly infringes any patent, then the rights granted to +You by any and all Contributors for the Covered Software under Section +2.1 of this License shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all +end user license agreements (excluding distributors and resellers) which +have been validly granted by You or Your distributors under this License +prior to termination shall survive termination. + +************************************************************************ +* * +* 6. Disclaimer of Warranty * +* ------------------------- * +* * +* Covered Software is provided under this License on an "as is" * +* basis, without warranty of any kind, either expressed, implied, or * +* statutory, including, without limitation, warranties that the * +* Covered Software is free of defects, merchantable, fit for a * +* particular purpose or non-infringing. The entire risk as to the * +* quality and performance of the Covered Software is with You. * +* Should any Covered Software prove defective in any respect, You * +* (not any Contributor) assume the cost of any necessary servicing, * +* repair, or correction. This disclaimer of warranty constitutes an * +* essential part of this License. No use of any Covered Software is * +* authorized under this License except under this disclaimer. * +* * +************************************************************************ + +************************************************************************ +* * +* 7. Limitation of Liability * +* -------------------------- * +* * +* Under no circumstances and under no legal theory, whether tort * +* (including negligence), contract, or otherwise, shall any * +* Contributor, or anyone who distributes Covered Software as * +* permitted above, be liable to You for any direct, indirect, * +* special, incidental, or consequential damages of any character * +* including, without limitation, damages for lost profits, loss of * +* goodwill, work stoppage, computer failure or malfunction, or any * +* and all other commercial damages or losses, even if such party * +* shall have been informed of the possibility of such damages. This * +* limitation of liability shall not apply to liability for death or * +* personal injury resulting from such party's negligence to the * +* extent applicable law prohibits such limitation. Some * +* jurisdictions do not allow the exclusion or limitation of * +* incidental or consequential damages, so this exclusion and * +* limitation may not apply to You. * +* * +************************************************************************ + +8. Litigation +------------- + +Any litigation relating to this License may be brought only in the +courts of a jurisdiction where the defendant maintains its principal +place of business and such litigation shall be governed by laws of that +jurisdiction, without reference to its conflict-of-law provisions. +Nothing in this Section shall prevent a party's ability to bring +cross-claims or counter-claims. + +9. Miscellaneous +---------------- + +This License represents the complete agreement concerning the subject +matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent +necessary to make it enforceable. Any law or regulation which provides +that the language of a contract shall be construed against the drafter +shall not be used to construe this License against a Contributor. + +10. Versions of the License +--------------------------- + +10.1. New Versions + +Mozilla Foundation is the license steward. Except as provided in Section +10.3, no one other than the license steward has the right to modify or +publish new versions of this License. Each version will be given a +distinguishing version number. + +10.2. Effect of New Versions + +You may distribute the Covered Software under the terms of the version +of the License under which You originally received the Covered Software, +or under the terms of any subsequent version published by the license +steward. + +10.3. Modified Versions + +If you create software not governed by this License, and you want to +create a new license for such software, you may create and use a +modified version of this License if you rename the license and remove +any references to the name of the license steward (except to note that +such modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary +Licenses + +If You choose to distribute Source Code Form that is Incompatible With +Secondary Licenses under the terms of this version of the License, the +notice described in Exhibit B of this License must be attached. + +Exhibit A - Source Code Form License Notice +------------------------------------------- + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular +file, then You may include the notice in a location (such as a LICENSE +file in a relevant directory) where a recipient would be likely to look +for such a notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - "Incompatible With Secondary Licenses" Notice +--------------------------------------------------------- + + This Source Code Form is "Incompatible With Secondary Licenses", as + defined by the Mozilla Public License, v. 2.0. diff --git a/LICENSES/MPL-2.0.txt b/LICENSES/MPL-2.0.txt new file mode 100644 index 0000000..14e2f77 --- /dev/null +++ b/LICENSES/MPL-2.0.txt @@ -0,0 +1,373 @@ +Mozilla Public License Version 2.0 +================================== + +1. Definitions +-------------- + +1.1. "Contributor" + means each individual or legal entity that creates, contributes to + the creation of, or owns Covered Software. + +1.2. "Contributor Version" + means the combination of the Contributions of others (if any) used + by a Contributor and that particular Contributor's Contribution. + +1.3. "Contribution" + means Covered Software of a particular Contributor. + +1.4. "Covered Software" + means Source Code Form to which the initial Contributor has attached + the notice in Exhibit A, the Executable Form of such Source Code + Form, and Modifications of such Source Code Form, in each case + including portions thereof. + +1.5. "Incompatible With Secondary Licenses" + means + + (a) that the initial Contributor has attached the notice described + in Exhibit B to the Covered Software; or + + (b) that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the + terms of a Secondary License. + +1.6. "Executable Form" + means any form of the work other than Source Code Form. + +1.7. "Larger Work" + means a work that combines Covered Software with other material, in + a separate file or files, that is not Covered Software. + +1.8. "License" + means this document. + +1.9. "Licensable" + means having the right to grant, to the maximum extent possible, + whether at the time of the initial grant or subsequently, any and + all of the rights conveyed by this License. + +1.10. "Modifications" + means any of the following: + + (a) any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered + Software; or + + (b) any new file in Source Code Form that contains any Covered + Software. + +1.11. "Patent Claims" of a Contributor + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the + License, by the making, using, selling, offering for sale, having + made, import, or transfer of either its Contributions or its + Contributor Version. + +1.12. "Secondary License" + means either the GNU General Public License, Version 2.0, the GNU + Lesser General Public License, Version 2.1, the GNU Affero General + Public License, Version 3.0, or any later versions of those + licenses. + +1.13. "Source Code Form" + means the form of the work preferred for making modifications. + +1.14. "You" (or "Your") + means an individual or a legal entity exercising rights under this + License. For legal entities, "You" includes any entity that + controls, is controlled by, or is under common control with You. For + purposes of this definition, "control" means (a) the power, direct + or indirect, to cause the direction or management of such entity, + whether by contract or otherwise, or (b) ownership of more than + fifty percent (50%) of the outstanding shares or beneficial + ownership of such entity. + +2. License Grants and Conditions +-------------------------------- + +2.1. Grants + +Each Contributor hereby grants You a world-wide, royalty-free, +non-exclusive license: + +(a) under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and + +(b) under Patent Claims of such Contributor to make, use, sell, offer + for sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. + +2.2. Effective Date + +The licenses granted in Section 2.1 with respect to any Contribution +become effective for each Contribution on the date the Contributor first +distributes such Contribution. + +2.3. Limitations on Grant Scope + +The licenses granted in this Section 2 are the only rights granted under +this License. No additional rights or licenses will be implied from the +distribution or licensing of Covered Software under this License. +Notwithstanding Section 2.1(b) above, no patent license is granted by a +Contributor: + +(a) for any code that a Contributor has removed from Covered Software; + or + +(b) for infringements caused by: (i) Your and any other third party's + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + +(c) under Patent Claims infringed by Covered Software in the absence of + its Contributions. + +This License does not grant any rights in the trademarks, service marks, +or logos of any Contributor (except as may be necessary to comply with +the notice requirements in Section 3.4). + +2.4. Subsequent Licenses + +No Contributor makes additional grants as a result of Your choice to +distribute the Covered Software under a subsequent version of this +License (see Section 10.2) or under the terms of a Secondary License (if +permitted under the terms of Section 3.3). + +2.5. Representation + +Each Contributor represents that the Contributor believes its +Contributions are its original creation(s) or it has sufficient rights +to grant the rights to its Contributions conveyed by this License. + +2.6. Fair Use + +This License is not intended to limit any rights You have under +applicable copyright doctrines of fair use, fair dealing, or other +equivalents. + +2.7. Conditions + +Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted +in Section 2.1. + +3. Responsibilities +------------------- + +3.1. Distribution of Source Form + +All distribution of Covered Software in Source Code Form, including any +Modifications that You create or to which You contribute, must be under +the terms of this License. You must inform recipients that the Source +Code Form of the Covered Software is governed by the terms of this +License, and how they can obtain a copy of this License. You may not +attempt to alter or restrict the recipients' rights in the Source Code +Form. + +3.2. Distribution of Executable Form + +If You distribute Covered Software in Executable Form then: + +(a) such Covered Software must also be made available in Source Code + Form, as described in Section 3.1, and You must inform recipients of + the Executable Form how they can obtain a copy of such Source Code + Form by reasonable means in a timely manner, at a charge no more + than the cost of distribution to the recipient; and + +(b) You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter + the recipients' rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + +You may create and distribute a Larger Work under terms of Your choice, +provided that You also comply with the requirements of this License for +the Covered Software. If the Larger Work is a combination of Covered +Software with a work governed by one or more Secondary Licenses, and the +Covered Software is not Incompatible With Secondary Licenses, this +License permits You to additionally distribute such Covered Software +under the terms of such Secondary License(s), so that the recipient of +the Larger Work may, at their option, further distribute the Covered +Software under the terms of either this License or such Secondary +License(s). + +3.4. Notices + +You may not remove or alter the substance of any license notices +(including copyright notices, patent notices, disclaimers of warranty, +or limitations of liability) contained within the Source Code Form of +the Covered Software, except that You may alter any license notices to +the extent required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + +You may choose to offer, and to charge a fee for, warranty, support, +indemnity or liability obligations to one or more recipients of Covered +Software. However, You may do so only on Your own behalf, and not on +behalf of any Contributor. You must make it absolutely clear that any +such warranty, support, indemnity, or liability obligation is offered by +You alone, and You hereby agree to indemnify every Contributor for any +liability incurred by such Contributor as a result of warranty, support, +indemnity or liability terms You offer. You may include additional +disclaimers of warranty and limitations of liability specific to any +jurisdiction. + +4. Inability to Comply Due to Statute or Regulation +--------------------------------------------------- + +If it is impossible for You to comply with any of the terms of this +License with respect to some or all of the Covered Software due to +statute, judicial order, or regulation then You must: (a) comply with +the terms of this License to the maximum extent possible; and (b) +describe the limitations and the code they affect. Such description must +be placed in a text file included with all distributions of the Covered +Software under this License. Except to the extent prohibited by statute +or regulation, such description must be sufficiently detailed for a +recipient of ordinary skill to be able to understand it. + +5. Termination +-------------- + +5.1. The rights granted under this License will terminate automatically +if You fail to comply with any of its terms. However, if You become +compliant, then the rights granted under this License from a particular +Contributor are reinstated (a) provisionally, unless and until such +Contributor explicitly and finally terminates Your grants, and (b) on an +ongoing basis, if such Contributor fails to notify You of the +non-compliance by some reasonable means prior to 60 days after You have +come back into compliance. Moreover, Your grants from a particular +Contributor are reinstated on an ongoing basis if such Contributor +notifies You of the non-compliance by some reasonable means, this is the +first time You have received notice of non-compliance with this License +from such Contributor, and You become compliant prior to 30 days after +Your receipt of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent +infringement claim (excluding declaratory judgment actions, +counter-claims, and cross-claims) alleging that a Contributor Version +directly or indirectly infringes any patent, then the rights granted to +You by any and all Contributors for the Covered Software under Section +2.1 of this License shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all +end user license agreements (excluding distributors and resellers) which +have been validly granted by You or Your distributors under this License +prior to termination shall survive termination. + +************************************************************************ +* * +* 6. Disclaimer of Warranty * +* ------------------------- * +* * +* Covered Software is provided under this License on an "as is" * +* basis, without warranty of any kind, either expressed, implied, or * +* statutory, including, without limitation, warranties that the * +* Covered Software is free of defects, merchantable, fit for a * +* particular purpose or non-infringing. The entire risk as to the * +* quality and performance of the Covered Software is with You. * +* Should any Covered Software prove defective in any respect, You * +* (not any Contributor) assume the cost of any necessary servicing, * +* repair, or correction. This disclaimer of warranty constitutes an * +* essential part of this License. No use of any Covered Software is * +* authorized under this License except under this disclaimer. * +* * +************************************************************************ + +************************************************************************ +* * +* 7. Limitation of Liability * +* -------------------------- * +* * +* Under no circumstances and under no legal theory, whether tort * +* (including negligence), contract, or otherwise, shall any * +* Contributor, or anyone who distributes Covered Software as * +* permitted above, be liable to You for any direct, indirect, * +* special, incidental, or consequential damages of any character * +* including, without limitation, damages for lost profits, loss of * +* goodwill, work stoppage, computer failure or malfunction, or any * +* and all other commercial damages or losses, even if such party * +* shall have been informed of the possibility of such damages. This * +* limitation of liability shall not apply to liability for death or * +* personal injury resulting from such party's negligence to the * +* extent applicable law prohibits such limitation. Some * +* jurisdictions do not allow the exclusion or limitation of * +* incidental or consequential damages, so this exclusion and * +* limitation may not apply to You. * +* * +************************************************************************ + +8. Litigation +------------- + +Any litigation relating to this License may be brought only in the +courts of a jurisdiction where the defendant maintains its principal +place of business and such litigation shall be governed by laws of that +jurisdiction, without reference to its conflict-of-law provisions. +Nothing in this Section shall prevent a party's ability to bring +cross-claims or counter-claims. + +9. Miscellaneous +---------------- + +This License represents the complete agreement concerning the subject +matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent +necessary to make it enforceable. Any law or regulation which provides +that the language of a contract shall be construed against the drafter +shall not be used to construe this License against a Contributor. + +10. Versions of the License +--------------------------- + +10.1. New Versions + +Mozilla Foundation is the license steward. Except as provided in Section +10.3, no one other than the license steward has the right to modify or +publish new versions of this License. Each version will be given a +distinguishing version number. + +10.2. Effect of New Versions + +You may distribute the Covered Software under the terms of the version +of the License under which You originally received the Covered Software, +or under the terms of any subsequent version published by the license +steward. + +10.3. Modified Versions + +If you create software not governed by this License, and you want to +create a new license for such software, you may create and use a +modified version of this License if you rename the license and remove +any references to the name of the license steward (except to note that +such modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary +Licenses + +If You choose to distribute Source Code Form that is Incompatible With +Secondary Licenses under the terms of this version of the License, the +notice described in Exhibit B of this License must be attached. + +Exhibit A - Source Code Form License Notice +------------------------------------------- + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular +file, then You may include the notice in a location (such as a LICENSE +file in a relevant directory) where a recipient would be likely to look +for such a notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - "Incompatible With Secondary Licenses" Notice +--------------------------------------------------------- + + This Source Code Form is "Incompatible With Secondary Licenses", as + defined by the Mozilla Public License, v. 2.0. diff --git a/MAINTAINERS.adoc b/MAINTAINERS.adoc index ac120fa..a1c6544 100644 --- a/MAINTAINERS.adoc +++ b/MAINTAINERS.adoc @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-License-Identifier: MPL-2.0 = Maintainers :toc: preamble diff --git a/Mustfile b/Mustfile index 4f5e24e..5f07541 100644 --- a/Mustfile +++ b/Mustfile @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 # Mustfile - hyperpolymath mandatory checks # See: https://github.com/hyperpolymath/mustfile diff --git a/NOTICE b/NOTICE index 9f88f33..dd2feeb 100644 --- a/NOTICE +++ b/NOTICE @@ -2,12 +2,12 @@ Licensing Notice ================ This project is authored by Jonathan D.A. Jewell (hyperpolymath) and -is licensed under the Palimpsest License (PMPL-1.0-or-later). +is licensed under the Mozilla Public License, version 2.0 (MPL-2.0). -The full license text is in LICENSE and LICENSES/PMPL-1.0-or-later.txt. +The full license text is in LICENSE and LICENSES/MPL-2.0.txt. All source files carry the SPDX identifier: - SPDX-License-Identifier: PMPL-1.0-or-later + SPDX-License-Identifier: MPL-2.0 -For more information about the Palimpsest License: - https://github.com/hyperpolymath/palimpsest-license +For more information about the MPL-2.0: + https://www.mozilla.org/en-US/MPL/2.0/ diff --git a/QUICKSTART-DEV.adoc b/QUICKSTART-DEV.adoc index 61c98fc..765aa4c 100644 --- a/QUICKSTART-DEV.adoc +++ b/QUICKSTART-DEV.adoc @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-License-Identifier: MPL-2.0 // Template: QUICKSTART-DEV.adoc — clone → build → test → PR // Replace neurophone, {{BUILD_CMD}}, {{TEST_CMD}}, {{LANG_STACK}} with actuals = neurophone — Quick Start for Developers diff --git a/QUICKSTART-MAINTAINER.adoc b/QUICKSTART-MAINTAINER.adoc index f240e3d..1187e89 100644 --- a/QUICKSTART-MAINTAINER.adoc +++ b/QUICKSTART-MAINTAINER.adoc @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-License-Identifier: MPL-2.0 // Template: QUICKSTART-MAINTAINER.adoc — packaging, deploying, and maintaining // Replace neurophone, {{PACKAGE_NAME}}, {{DEPS}} with actuals = neurophone — Quick Start for Platform Maintainers @@ -106,7 +106,7 @@ Or via OPSM: `opsm update {{PACKAGE_NAME}}` == Security Notes -* License: PMPL-1.0-or-later (Palimpsest License) +* License: MPL-2.0 (Palimpsest License) * All dependencies SHA-pinned * `panic-attacker` scan results: link:INSTALL-SECURITY-REPORT.adoc[] * OpenSSF Scorecard: see badge in README diff --git a/QUICKSTART-USER.adoc b/QUICKSTART-USER.adoc index 89f1713..75729e8 100644 --- a/QUICKSTART-USER.adoc +++ b/QUICKSTART-USER.adoc @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-License-Identifier: MPL-2.0 // Template: QUICKSTART-USER.adoc — 5-minute path to working software // Replace neurophone, Neurophone — See README.adoc for details., just run, Neurophone started successfully. with actuals = neurophone — Quick Start for Users diff --git a/README.adoc b/README.adoc index 469c38f..6c83e5d 100644 --- a/README.adoc +++ b/README.adoc @@ -1,8 +1,8 @@ -image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] +image:https://img.shields.io/badge/License-MPL--2.0-blue.svg[License: MPL-2.0,link="https://www.mozilla.org/en-US/MPL/2.0/"] image:https://img.shields.io/badge/Philosophy-Palimpsest-indigo.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-license"] -// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-License-Identifier: MPL-2.0 // SPDX-FileCopyrightText: 2025 Jonathan D.A. Jewell = NeuroPhone - Neurosymbolic AI Android Application :toc: @@ -180,7 +180,7 @@ Contributions welcome! See link:CONTRIBUTING.md[CONTRIBUTING.md]. == License -Palimpsest-MPL-1.0 License - See LICENSE file +MPL-2.0 License - See LICENSE file == Citation diff --git a/SECURITY.md b/SECURITY.md index d84511c..60a5411 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -1,4 +1,4 @@ - + # Security Policy ## Supported Versions diff --git a/TESTING-REPORT.adoc b/TESTING-REPORT.adoc index 8b84613..417f359 100644 --- a/TESTING-REPORT.adoc +++ b/TESTING-REPORT.adoc @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-License-Identifier: MPL-2.0 = Neurophone Testing Report :author: Claude Code (Automated Testing) :date: 2025-12-29 diff --git a/TESTING-REPORT.scm b/TESTING-REPORT.scm index 867aa6b..639b190 100644 --- a/TESTING-REPORT.scm +++ b/TESTING-REPORT.scm @@ -1,4 +1,4 @@ -;; SPDX-License-Identifier: PMPL-1.0-or-later +;; SPDX-License-Identifier: MPL-2.0 ;; Neurophone Testing Report - Guile Scheme Format ;; Generated: 2025-12-29 diff --git a/TOPOLOGY.md b/TOPOLOGY.md index 47c1c8f..77521ba 100644 --- a/TOPOLOGY.md +++ b/TOPOLOGY.md @@ -1,4 +1,4 @@ - + diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 4f438c7..578e131 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -1,6 +1,6 @@ diff --git a/android/app/src/main/res/drawable/widget_preview.xml b/android/app/src/main/res/drawable/widget_preview.xml index 1afc95b..13e7dd4 100644 --- a/android/app/src/main/res/drawable/widget_preview.xml +++ b/android/app/src/main/res/drawable/widget_preview.xml @@ -1,6 +1,6 @@ diff --git a/android/app/src/main/res/layout/widget_neurophone.xml b/android/app/src/main/res/layout/widget_neurophone.xml index 17beedf..e2eb504 100644 --- a/android/app/src/main/res/layout/widget_neurophone.xml +++ b/android/app/src/main/res/layout/widget_neurophone.xml @@ -1,6 +1,6 @@ diff --git a/android/app/src/main/res/xml/neurophone_widget_info.xml b/android/app/src/main/res/xml/neurophone_widget_info.xml index 28b7b16..834385c 100644 --- a/android/app/src/main/res/xml/neurophone_widget_info.xml +++ b/android/app/src/main/res/xml/neurophone_widget_info.xml @@ -1,6 +1,6 @@ context). diff --git a/crates/claude-client/benches/claude_bench.rs b/crates/claude-client/benches/claude_bench.rs index a8ee68b..09b0fa0 100644 --- a/crates/claude-client/benches/claude_bench.rs +++ b/crates/claude-client/benches/claude_bench.rs @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-License-Identifier: MPL-2.0 // SPDX-FileCopyrightText: 2025 Jonathan D.A. Jewell //! Benches for the Claude client (offline / routing only — no network). diff --git a/crates/claude-client/src/lib.rs b/crates/claude-client/src/lib.rs index a7cb36b..d251ff6 100644 --- a/crates/claude-client/src/lib.rs +++ b/crates/claude-client/src/lib.rs @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-License-Identifier: MPL-2.0 // NeuroPhone - High-Assurance Hardware Orchestration // Copyright (c) 2026 Jonathan D.A. Jewell diff --git a/crates/claude-client/tests/integration_routing.rs b/crates/claude-client/tests/integration_routing.rs index 8d7165c..7467484 100644 --- a/crates/claude-client/tests/integration_routing.rs +++ b/crates/claude-client/tests/integration_routing.rs @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-License-Identifier: MPL-2.0 // SPDX-FileCopyrightText: 2025 Jonathan D.A. Jewell //! Integration tests for the Claude client routing logic (no network). diff --git a/crates/esn/benches/esn_bench.rs b/crates/esn/benches/esn_bench.rs index b6e5cf5..fe3b131 100644 --- a/crates/esn/benches/esn_bench.rs +++ b/crates/esn/benches/esn_bench.rs @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-License-Identifier: MPL-2.0 // SPDX-FileCopyrightText: 2025 Jonathan D.A. Jewell //! Benches for the ESN reservoir. diff --git a/crates/esn/src/lib.rs b/crates/esn/src/lib.rs index e514cf9..9bc02ed 100644 --- a/crates/esn/src/lib.rs +++ b/crates/esn/src/lib.rs @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-License-Identifier: MPL-2.0 // NeuroPhone - High-Assurance Hardware Orchestration // Copyright (c) 2026 Jonathan D.A. Jewell diff --git a/crates/esn/tests/integration_esn.rs b/crates/esn/tests/integration_esn.rs index c7a6e13..822638e 100644 --- a/crates/esn/tests/integration_esn.rs +++ b/crates/esn/tests/integration_esn.rs @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-License-Identifier: MPL-2.0 // SPDX-FileCopyrightText: 2025 Jonathan D.A. Jewell //! Integration tests for the ESN (Echo State Network). diff --git a/crates/llm/benches/llm_bench.rs b/crates/llm/benches/llm_bench.rs index 661fd20..9382b39 100644 --- a/crates/llm/benches/llm_bench.rs +++ b/crates/llm/benches/llm_bench.rs @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-License-Identifier: MPL-2.0 // SPDX-FileCopyrightText: 2025 Jonathan D.A. Jewell //! Benches for the LLM mock backend (real backend benched out-of-tree). diff --git a/crates/llm/src/lib.rs b/crates/llm/src/lib.rs index 14b04c9..0c64281 100644 --- a/crates/llm/src/lib.rs +++ b/crates/llm/src/lib.rs @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-License-Identifier: MPL-2.0 // SPDX-FileCopyrightText: 2025 Jonathan D.A. Jewell //! Local LLM Interface — abstraction for on-device inference. //! diff --git a/crates/llm/tests/integration_backend.rs b/crates/llm/tests/integration_backend.rs index 80b871f..6f28bac 100644 --- a/crates/llm/tests/integration_backend.rs +++ b/crates/llm/tests/integration_backend.rs @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-License-Identifier: MPL-2.0 // SPDX-FileCopyrightText: 2025 Jonathan D.A. Jewell //! Integration tests for the LLM backend abstraction. diff --git a/crates/lsm/benches/lsm_bench.rs b/crates/lsm/benches/lsm_bench.rs index 2b2fddd..05beb71 100644 --- a/crates/lsm/benches/lsm_bench.rs +++ b/crates/lsm/benches/lsm_bench.rs @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-License-Identifier: MPL-2.0 // SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell //! Liquid State Machine (LSM) benchmarks — reservoir step latency, diff --git a/crates/lsm/src/lib.rs b/crates/lsm/src/lib.rs index 2f836a5..ad3098a 100644 --- a/crates/lsm/src/lib.rs +++ b/crates/lsm/src/lib.rs @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-License-Identifier: MPL-2.0 // NeuroPhone - High-Assurance Hardware Orchestration // Copyright (c) 2026 Jonathan D.A. Jewell diff --git a/crates/lsm/tests/integration_lsm.rs b/crates/lsm/tests/integration_lsm.rs index 5f0d56e..aa70626 100644 --- a/crates/lsm/tests/integration_lsm.rs +++ b/crates/lsm/tests/integration_lsm.rs @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-License-Identifier: MPL-2.0 // SPDX-FileCopyrightText: 2025 Jonathan D.A. Jewell //! Integration tests for the LSM (Liquid State Machine). diff --git a/crates/neurophone-android/src/lib.rs b/crates/neurophone-android/src/lib.rs index bdb4505..8d7634d 100644 --- a/crates/neurophone-android/src/lib.rs +++ b/crates/neurophone-android/src/lib.rs @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-License-Identifier: MPL-2.0 //! Stub implementation pub fn hello() -> &'static str { diff --git a/crates/neurophone-core/benches/neurophone_bench.rs b/crates/neurophone-core/benches/neurophone_bench.rs index d54a2b7..f993859 100644 --- a/crates/neurophone-core/benches/neurophone_bench.rs +++ b/crates/neurophone-core/benches/neurophone_bench.rs @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-License-Identifier: MPL-2.0 // NeuroPhone - High-Assurance Hardware Orchestration // Copyright (c) 2026 Jonathan D.A. Jewell diff --git a/crates/neurophone-core/benches/pipeline_bench.rs b/crates/neurophone-core/benches/pipeline_bench.rs index 8a16b1f..39f9426 100644 --- a/crates/neurophone-core/benches/pipeline_bench.rs +++ b/crates/neurophone-core/benches/pipeline_bench.rs @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-License-Identifier: MPL-2.0 // SPDX-FileCopyrightText: 2025 Jonathan D.A. Jewell //! End-to-end pipeline bench: sensor → LSM → ESN → bridge → LLM mock. diff --git a/crates/neurophone-core/src/lib.rs b/crates/neurophone-core/src/lib.rs index ca11b6f..0266e1f 100644 --- a/crates/neurophone-core/src/lib.rs +++ b/crates/neurophone-core/src/lib.rs @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-License-Identifier: MPL-2.0 // NeuroPhone - High-Assurance Hardware Orchestration // Copyright (c) 2026 Jonathan D.A. Jewell diff --git a/crates/neurophone-core/tests/aspect_concurrency.rs b/crates/neurophone-core/tests/aspect_concurrency.rs index dd3dbf2..4ff0c42 100644 --- a/crates/neurophone-core/tests/aspect_concurrency.rs +++ b/crates/neurophone-core/tests/aspect_concurrency.rs @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-License-Identifier: MPL-2.0 // SPDX-FileCopyrightText: 2025 Jonathan D.A. Jewell //! Aspect tests — concurrency, error paths, resource bounds, timing. diff --git a/crates/neurophone-core/tests/integration_pipeline.rs b/crates/neurophone-core/tests/integration_pipeline.rs index 02d45f8..f698322 100644 --- a/crates/neurophone-core/tests/integration_pipeline.rs +++ b/crates/neurophone-core/tests/integration_pipeline.rs @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-License-Identifier: MPL-2.0 // SPDX-FileCopyrightText: 2025 Jonathan D.A. Jewell //! Cross-crate integration: sensor → LSM → ESN → bridge → LLM mock. //! This is the closest thing to a true end-to-end test we can run on the host. diff --git a/crates/neurophone-core/tests/lifecycle.rs b/crates/neurophone-core/tests/lifecycle.rs index 07ad8f8..2f0adc8 100644 --- a/crates/neurophone-core/tests/lifecycle.rs +++ b/crates/neurophone-core/tests/lifecycle.rs @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-License-Identifier: MPL-2.0 // SPDX-FileCopyrightText: 2025 Jonathan D.A. Jewell //! Lifecycle tests: init → start → run → shutdown → restart. diff --git a/crates/neurophone-core/tests/property_test.rs b/crates/neurophone-core/tests/property_test.rs index 81ddc82..8bb43da 100644 --- a/crates/neurophone-core/tests/property_test.rs +++ b/crates/neurophone-core/tests/property_test.rs @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-License-Identifier: MPL-2.0 // NeuroPhone - High-Assurance Hardware Orchestration // Copyright (c) 2026 Jonathan D.A. Jewell diff --git a/crates/sensors/benches/sensors_bench.rs b/crates/sensors/benches/sensors_bench.rs index bf8ece5..adab82b 100644 --- a/crates/sensors/benches/sensors_bench.rs +++ b/crates/sensors/benches/sensors_bench.rs @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-License-Identifier: MPL-2.0 // SPDX-FileCopyrightText: 2025 Jonathan D.A. Jewell //! Benches for the sensors pipeline. diff --git a/crates/sensors/src/lib.rs b/crates/sensors/src/lib.rs index 52a4c95..ec75757 100644 --- a/crates/sensors/src/lib.rs +++ b/crates/sensors/src/lib.rs @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-License-Identifier: MPL-2.0 // SPDX-FileCopyrightText: 2025 Jonathan D.A. Jewell //! Phone Sensor Processing — Temporal Feature Extraction //! diff --git a/crates/sensors/tests/aspect_lifecycle.rs b/crates/sensors/tests/aspect_lifecycle.rs index 17a6fba..0e9ad7d 100644 --- a/crates/sensors/tests/aspect_lifecycle.rs +++ b/crates/sensors/tests/aspect_lifecycle.rs @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-License-Identifier: MPL-2.0 // SPDX-FileCopyrightText: 2025 Jonathan D.A. Jewell //! Aspect + lifecycle tests for sensors. diff --git a/crates/sensors/tests/integration_pipeline.rs b/crates/sensors/tests/integration_pipeline.rs index 9a02913..e317ad6 100644 --- a/crates/sensors/tests/integration_pipeline.rs +++ b/crates/sensors/tests/integration_pipeline.rs @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-License-Identifier: MPL-2.0 // SPDX-FileCopyrightText: 2025 Jonathan D.A. Jewell //! Integration tests for the sensors crate (point-to-point: reading -> features). diff --git a/docs/AI_INSTALLATION_GUIDE.adoc b/docs/AI_INSTALLATION_GUIDE.adoc index 026aa5f..cb252ac 100644 --- a/docs/AI_INSTALLATION_GUIDE.adoc +++ b/docs/AI_INSTALLATION_GUIDE.adoc @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-License-Identifier: MPL-2.0 // SPDX-FileCopyrightText: 2025 Jonathan D.A. Jewell (hyperpolymath) = NeuroPhone: AI-Assisted Installation Guide :toc: @@ -419,4 +419,4 @@ Keep it simple: Copyright (c) 2025 Jonathan D.A. Jewell (hyperpolymath) -SPDX-License-Identifier: PMPL-1.0-or-later +SPDX-License-Identifier: MPL-2.0 diff --git a/docs/BT-PRESENCE-PLAN.adoc b/docs/BT-PRESENCE-PLAN.adoc index 98843b6..2f34069 100644 --- a/docs/BT-PRESENCE-PLAN.adoc +++ b/docs/BT-PRESENCE-PLAN.adoc @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-License-Identifier: MPL-2.0 // SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell = NeuroPhone — Bluetooth Presence Sensor Plan :toc: preamble diff --git a/docs/CITATIONS.adoc b/docs/CITATIONS.adoc index 3d1bc87..fceb39e 100644 --- a/docs/CITATIONS.adoc +++ b/docs/CITATIONS.adoc @@ -10,7 +10,7 @@ title = {neurophone}, year = {2025}, url = {https://github.com/hyperpolymath/neurophone}, - license = {PMPL-1.0-or-later} + license = {MPL-2.0} } ---- diff --git a/docs/OS_INTEGRATION.adoc b/docs/OS_INTEGRATION.adoc index 43d5dfa..1b758a0 100644 --- a/docs/OS_INTEGRATION.adoc +++ b/docs/OS_INTEGRATION.adoc @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-License-Identifier: MPL-2.0 // SPDX-FileCopyrightText: 2025 Jonathan D.A. Jewell = NeuroPhone OS Integration Guide :toc: diff --git a/docs/architecture.adoc b/docs/architecture.adoc index 9af82ff..c115841 100644 --- a/docs/architecture.adoc +++ b/docs/architecture.adoc @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-License-Identifier: MPL-2.0 = NeuroPhone Architecture :toc: diff --git a/docs/build.adoc b/docs/build.adoc index d7021ab..5fa6c39 100644 --- a/docs/build.adoc +++ b/docs/build.adoc @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-License-Identifier: MPL-2.0 = Building NeuroPhone :toc: diff --git a/docs/governance/CRG-AUDIT-2026-04-18.adoc b/docs/governance/CRG-AUDIT-2026-04-18.adoc index b93890f..0252e4f 100644 --- a/docs/governance/CRG-AUDIT-2026-04-18.adoc +++ b/docs/governance/CRG-AUDIT-2026-04-18.adoc @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-License-Identifier: MPL-2.0 // Copyright (c) 2026 Jonathan D.A. Jewell = Neurophone — CRG Audit (2026-04-18) @@ -77,7 +77,7 @@ Publication requires B+. Long alpha is discipline, not shame. | Very thin relative to gossamer/boj-server annotation bars | `LICENSE` + `LICENSES/` directory -| PRESENT (`LICENSE`, `LICENSES/PMPL-1.0-or-later.txt`) +| PRESENT (`LICENSE`, `LICENSES/MPL-2.0.txt`) | Good licence hygiene structurally, but *see merge conflicts below* | `guix.scm` + `flake.nix` @@ -142,7 +142,7 @@ Sample (`.github/workflows/rust-ci.yml` lines 1-5): [source,yaml] ---- <<<<<<< HEAD -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 ======= # SPDX-License-Identifier: >>>>>>> 0a372d5 (chore: sync from parent repo automation) @@ -153,7 +153,7 @@ A YAML file cannot parse with `<<<<<<< HEAD` as its first token. This means every affected workflow (including `rust-ci.yml`, `codeql.yml`, `scorecard.yml`, `quality.yml`, `security-policy.yml`) is *syntactically invalid* and cannot have run successfully since the merge. The README -badge "image:https://img.shields.io/…[License: PMPL-1.0]" is in a +badge "image:https://img.shields.io/…[License: MPL-2.0]" is in a conflict block — GitHub's adoc renderer will display the conflict markers verbatim to any visitor. @@ -385,7 +385,7 @@ What blocks *immediate* promotion to D (do these first): hand-merge of each file, delete all `<<<<<<< HEAD` / `=======` / `>>>>>>> ` marker lines. Verify with `rg '^<<<<<<< HEAD|^>>>>>>> '` returns zero. Keep the - PMPL-1.0-or-later SPDX line (drop the non-canonical variant per + MPL-2.0 SPDX line (drop the non-canonical variant per Rule 1 of the licence policy). . **Make `rust-ci.yml` actually run.** Once conflicts are resolved, trigger a CI run and record the green SHA in STATE.a2ml. diff --git a/docs/installation.adoc b/docs/installation.adoc index 0a6cd09..4b623a2 100644 --- a/docs/installation.adoc +++ b/docs/installation.adoc @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-License-Identifier: MPL-2.0 = Installing NeuroPhone :toc: diff --git a/docs/tech-debt-2026-05-26.md b/docs/tech-debt-2026-05-26.md index 82ae5e9..fd20287 100644 --- a/docs/tech-debt-2026-05-26.md +++ b/docs/tech-debt-2026-05-26.md @@ -1,5 +1,5 @@ @@ -22,9 +22,9 @@ No proof-bearing files (`*.v`, `*.lean`, `*.agda`, `*.idr`, `*.idr2`, `*.fst`, ` | Field | Value | |---|---| | LICENSE file | `LICENSE` | -| SPDX header | `PMPL-1.0-or-later` | -| Manifest licence | `PMPL-1.0-or-later` | -| Body classifier | `PMPL-1.0-or-later` | +| SPDX header | `MPL-2.0` | +| Manifest licence | `MPL-2.0` | +| Body classifier | `MPL-2.0` | | Severity | `ok` | **Recommended next move:** none for licence. diff --git a/docs/usage.adoc b/docs/usage.adoc index 3fcc50f..a6bba41 100644 --- a/docs/usage.adoc +++ b/docs/usage.adoc @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-License-Identifier: MPL-2.0 = NeuroPhone Usage :toc: diff --git a/guix.scm b/guix.scm index 06d6a63..479157f 100644 --- a/guix.scm +++ b/guix.scm @@ -1,4 +1,4 @@ -; SPDX-License-Identifier: PMPL-1.0-or-later +; SPDX-License-Identifier: MPL-2.0 ;; guix.scm — GNU Guix package definition for neurophone ;; Usage: guix shell -f guix.scm @@ -14,5 +14,5 @@ (synopsis "neurophone") (description "neurophone — part of the hyperpolymath ecosystem.") (home-page "https://github.com/hyperpolymath/neurophone") - (license ((@@ (guix licenses) license) "PMPL-1.0-or-later" + (license ((@@ (guix licenses) license) "MPL-2.0" "https://github.com/hyperpolymath/palimpsest-license"))) diff --git a/hooks/validate-codeql.sh b/hooks/validate-codeql.sh index c435189..15b52c3 100755 --- a/hooks/validate-codeql.sh +++ b/hooks/validate-codeql.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 # Pre-commit hook: Validate CodeQL language matrix matches repo set -euo pipefail diff --git a/hooks/validate-permissions.sh b/hooks/validate-permissions.sh index 50fce4f..1999b01 100755 --- a/hooks/validate-permissions.sh +++ b/hooks/validate-permissions.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 # Pre-commit hook: Validate workflow permissions declarations set -euo pipefail ERRORS=0 diff --git a/hooks/validate-sha-pins.sh b/hooks/validate-sha-pins.sh index c6d9913..697092b 100755 --- a/hooks/validate-sha-pins.sh +++ b/hooks/validate-sha-pins.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 # Pre-commit hook: Validate GitHub Actions are SHA-pinned set -euo pipefail diff --git a/hooks/validate-spdx.sh b/hooks/validate-spdx.sh index 8f50002..cc81cf1 100755 --- a/hooks/validate-spdx.sh +++ b/hooks/validate-spdx.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 # Pre-commit hook: Validate SPDX headers in workflow files set -euo pipefail @@ -13,7 +13,7 @@ for workflow in .github/workflows/*.yml .github/workflows/*.yaml; do first_line=$(head -n1 "$workflow") if ! echo "$first_line" | grep -qE "$SPDX_PATTERN"; then echo "ERROR: Missing SPDX header in $workflow" - echo " First line should be: # SPDX-License-Identifier: PMPL-1.0-or-later" + echo " First line should be: # SPDX-License-Identifier: MPL-2.0" ERRORS=$((ERRORS + 1)) fi done diff --git a/k9iser.toml b/k9iser.toml index f86b9cb..6243d70 100644 --- a/k9iser.toml +++ b/k9iser.toml @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 # Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) # # k9iser manifest for neurophone diff --git a/llm-warmup-dev.md b/llm-warmup-dev.md index da1405e..fe8baed 100644 --- a/llm-warmup-dev.md +++ b/llm-warmup-dev.md @@ -11,6 +11,6 @@ See README.adoc for overview. - `just heal` — attempt auto-repair ## Quick Context -- License: PMPL-1.0-or-later +- License: MPL-2.0 - Part of hyperpolymath ecosystem - See EXPLAINME.adoc for architecture diff --git a/llm-warmup-user.md b/llm-warmup-user.md index 0b74974..0eeaeca 100644 --- a/llm-warmup-user.md +++ b/llm-warmup-user.md @@ -11,6 +11,6 @@ See README.adoc for overview. - `just heal` — attempt auto-repair ## Quick Context -- License: PMPL-1.0-or-later +- License: MPL-2.0 - Part of hyperpolymath ecosystem - See EXPLAINME.adoc for architecture diff --git a/proofs/README.adoc b/proofs/README.adoc index 2a7d9c2..28620db 100644 --- a/proofs/README.adoc +++ b/proofs/README.adoc @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-License-Identifier: MPL-2.0 = NeuroPhone Proof Corpus :toc: diff --git a/proofs/dafny/README.adoc b/proofs/dafny/README.adoc index 1c6d172..699a9a9 100644 --- a/proofs/dafny/README.adoc +++ b/proofs/dafny/README.adoc @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-License-Identifier: MPL-2.0 = Dafny / F* proofs Obligations discharged here (see issue #84): diff --git a/proofs/lean/README.adoc b/proofs/lean/README.adoc index 794c89a..2f2de9b 100644 --- a/proofs/lean/README.adoc +++ b/proofs/lean/README.adoc @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: PMPL-1.0-or-later +// SPDX-License-Identifier: MPL-2.0 = Lean / Coq proofs Obligations discharged here (see issue #84): diff --git a/proofs/tla/Lifecycle.tla b/proofs/tla/Lifecycle.tla index 0b7fe63..c580bd1 100644 --- a/proofs/tla/Lifecycle.tla +++ b/proofs/tla/Lifecycle.tla @@ -1,5 +1,5 @@ ---------------------------- MODULE Lifecycle ---------------------------- -(* SPDX-License-Identifier: PMPL-1.0-or-later *) +(* SPDX-License-Identifier: MPL-2.0 *) (* Obligation 2.1 (issue #84): lifecycle safety for *) (* neurophone-core::NeuroSymbolicSystem. *) (* *) diff --git a/scripts/install-on-phone.sh b/scripts/install-on-phone.sh index 321cb99..225bf26 100755 --- a/scripts/install-on-phone.sh +++ b/scripts/install-on-phone.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 # SPDX-FileCopyrightText: 2025 Jonathan D.A. Jewell # # install-on-phone.sh — One-shot ADB installer for NeuroPhone. diff --git a/scripts/install-termux.sh b/scripts/install-termux.sh index 8b8dd84..61baf65 100755 --- a/scripts/install-termux.sh +++ b/scripts/install-termux.sh @@ -1,5 +1,5 @@ #!/data/data/com.termux/files/usr/bin/bash -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 # SPDX-FileCopyrightText: 2025 Jonathan D.A. Jewell # # install-termux.sh — Install NeuroPhone CLI inside Termux on the phone. diff --git a/scripts/start-on-boot.sh b/scripts/start-on-boot.sh index d474eb8..8085f43 100755 --- a/scripts/start-on-boot.sh +++ b/scripts/start-on-boot.sh @@ -1,5 +1,5 @@ #!/data/data/com.termux/files/usr/bin/bash -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 # SPDX-FileCopyrightText: 2025 Jonathan D.A. Jewell # # start-on-boot.sh — Termux:Boot hook to keep the CLI side of NeuroPhone diff --git a/scripts/uninstall.sh b/scripts/uninstall.sh index 850399e..5928bec 100755 --- a/scripts/uninstall.sh +++ b/scripts/uninstall.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 # SPDX-FileCopyrightText: 2025 Jonathan D.A. Jewell # # uninstall.sh — Remove NeuroPhone (CLI + APK + data) from the device. diff --git a/setup.sh b/setup.sh index 380018f..084b3f9 100755 --- a/setup.sh +++ b/setup.sh @@ -1,5 +1,5 @@ #!/bin/sh -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 # setup.sh — Universal setup script for neurophone # # Detects your shell, platform, and installs prerequisites. @@ -252,7 +252,7 @@ main() { # Write report REPORT_FILE="INSTALL-SECURITY-REPORT.adoc" { - printf "// SPDX-License-Identifier: PMPL-1.0-or-later\n" + printf "// SPDX-License-Identifier: MPL-2.0\n" printf "= Install Security Report\n" printf ":date: %s\n\n" "$(date -Iseconds 2>/dev/null || date)" printf "== Platform\n" diff --git a/stapeln.toml b/stapeln.toml index 4a06297..99ba88c 100644 --- a/stapeln.toml +++ b/stapeln.toml @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: PMPL-1.0-or-later +# SPDX-License-Identifier: MPL-2.0 # stapeln.toml — Layer-based container build for neurophone # # stapeln builds containers as composable layers (German: "to stack"). @@ -9,7 +9,7 @@ name = "neurophone" version = "0.1.0" description = "neurophone" author = "Jonathan D.A. Jewell " -license = "PMPL-1.0-or-later" +license = "MPL-2.0" registry = "ghcr.io/hyperpolymath" [build] From dc8d638cd6032b3e81e79f3ee61c683515714c49 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 2 Jun 2026 09:53:40 +0000 Subject: [PATCH 8/8] docs(claude-md): record estate License Policy (ownership-driven) License by ownership, not blanket: MPL-2.0 = sole repos; All Rights Reserved = 007; AGPL-3.0-or-later = son-shared; PMPL/Palimpsest = only palimpsest-license, palimpsest-plasma, and (prospectively) consent-aware-http; leave forks alone. https://claude.ai/code/session_01Gu1JFCZHuBtBhAWPr4sMQw --- .claude/CLAUDE.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/.claude/CLAUDE.md b/.claude/CLAUDE.md index 2f8182a..c74f32a 100644 --- a/.claude/CLAUDE.md +++ b/.claude/CLAUDE.md @@ -13,6 +13,26 @@ The following files in `.machine_readable/` contain structured project metadata: # CLAUDE.md - AI Assistant Instructions +## License Policy (Hyperpolymath Standard) + +License is determined by repository **ownership**, not blanket-applied. NEVER flip a +repo's license without first confirming its ownership category. + +| License | Applies to | +|---|---| +| **MPL-2.0** | Jonathan's sole repos (default for solely-owned) | +| **All Rights Reserved** | the `007` repo | +| **AGPL-3.0-or-later** | repos shared/co-owned with his son | +| **PMPL-1.0-or-later (Palimpsest)** | ONLY `palimpsest-license`, `palimpsest-plasma`, and (prospectively) `consent-aware-http` — nowhere else | +| *(do not modify)* | forks of other people's projects — leave their license untouched | + +Rules: +- Do NOT apply PMPL/Palimpsest as a license anywhere except the three repos above. + "Palimpsest" may still appear as the ecosystem/governance **brand** (contractile + family, etc.) — that is not a license claim and stays. +- Before changing any SPDX header, `LICENSE` file, or Cargo/manifest `license` + field, confirm the repo's ownership category. When unsure, ask — do not guess. + ## Language Policy (Hyperpolymath Standard) ### ALLOWED Languages & Tools