Skip to content

Commit 0710601

Browse files
Jonathan D.A. Jewellclaude
andcommitted
feat: populate SCM files and add user-facing templates
.machine_readable/: - STATE.scm: Full project state with v0.4 status, milestones, blockers - ECOSYSTEM.scm: Position in licensing ecosystem, related projects - META.scm: Architecture decisions (OCaml, Dutch law, bilingual) templates/: - STATE.scm.template: Template for users to track project state - ECOSYSTEM.scm.template: Template for ecosystem positioning - META.scm.template: Template for ADRs and practices - README.adoc: Usage guide for templates 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent f72c9b6 commit 0710601

File tree

7 files changed

+390
-34
lines changed

7 files changed

+390
-34
lines changed

.machine_readable/ECOSYSTEM.scm

Lines changed: 43 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,51 @@
55
(ecosystem
66
(version "1.0")
77
(name "palimpsest-license")
8-
(type "")
9-
(purpose "")
8+
(type "legal-framework")
9+
(purpose "Ethical licensing for creative works in the age of AI")
1010

1111
(position-in-ecosystem
12-
(category "")
13-
(subcategory "")
14-
(unique-value ()))
12+
(category "open-source-licensing")
13+
(subcategory "ai-ethics-aware")
14+
(unique-value
15+
("Emotional lineage protection"
16+
"Quantum-proof traceability"
17+
"DAO governance support"
18+
"Dutch/Scottish dual jurisdiction"
19+
"NI system consent requirements")))
1520

16-
(related-projects ())
21+
(related-projects
22+
(sibling-standard
23+
(name "rhodium-standard-repositories")
24+
(relationship "RSR-certified project")
25+
(url "github.com/hyperpolymath/rhodium-standard-repositories"))
26+
(sibling-standard
27+
(name "affinescript")
28+
(relationship "Affine type system for license verification")
29+
(url "github.com/hyperpolymath/affinescript"))
30+
(potential-consumer
31+
(name "creative-commons")
32+
(relationship "Complementary license ecosystem")
33+
(integration-point "CC-BY-SA + Palimpsest layering"))
34+
(potential-consumer
35+
(name "open-source-projects")
36+
(relationship "Projects needing AI training consent")
37+
(integration-point "License adoption"))
38+
(inspiration
39+
(name "mozilla-public-license")
40+
(relationship "MPL-2.0 base")
41+
(note "Palimpsest extends MPL with AI/ethics clauses")))
1742

18-
(what-this-is ())
43+
(what-this-is
44+
("A license framework for creative works"
45+
"Protection for emotional and cultural lineage"
46+
"Consent mechanism for AI training use"
47+
"Bilingual legal text (Dutch/English)"
48+
"Machine-readable metadata schemas"
49+
"Validation tools for compliance checking"))
1950

20-
(what-this-is-not ()))
51+
(what-this-is-not
52+
("Not a replacement for copyright law"
53+
"Not a software license (use for creative/cultural works)"
54+
"Not legally tested in court (yet)"
55+
"Not a DRM system")))

.machine_readable/META.scm

Lines changed: 56 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,65 @@
11
;; SPDX-License-Identifier: AGPL-3.0-or-later
2-
;; META.scm - Meta-level information for palimpsest-license
2+
;; META.scm - Architecture decisions and practices for palimpsest-license
33
;; Media-Type: application/meta+scheme
44

55
(meta
6-
(architecture-decisions ())
6+
(architecture-decisions
7+
(adr-001
8+
(status "accepted")
9+
(date "2025-12-09")
10+
(title "OCaml as primary implementation language")
11+
(context "Need type-safe implementation for license validation logic")
12+
(decision "Use OCaml with Melange for browser, OCanren for logic programming")
13+
(consequences
14+
("Strong static typing catches errors early"
15+
"Melange enables browser-based validation"
16+
"OCanren provides declarative license rules"
17+
"Haskell codebase requires migration")))
18+
(adr-002
19+
(status "accepted")
20+
(date "2025-04-05")
21+
(title "Dutch law as primary jurisdiction")
22+
(context "Need stable, creator-friendly legal framework")
23+
(decision "Dutch law primary, Scottish courts for disputes")
24+
(consequences
25+
("Strong moral rights protection"
26+
"EU GDPR alignment"
27+
"Requires Dutch translation of all legal texts")))
28+
(adr-003
29+
(status "accepted")
30+
(date "2024-12-15")
31+
(title "Bilingual documentation")
32+
(context "Legal enforceability requires native language")
33+
(decision "Dutch legally binding, English informative")
34+
(consequences
35+
("Increased documentation burden"
36+
"Translation consistency checks needed"
37+
"Wider accessibility"))))
738

839
(development-practices
9-
(code-style ())
40+
(code-style
41+
(ocaml "ocp-indent, ocamlformat")
42+
(docs "AsciiDoc primary, Markdown for GitHub"))
1043
(security
11-
(principle "Defense in depth"))
12-
(testing ())
44+
(principle "Defense in depth")
45+
(requirements
46+
("SHA-256+ for hashing"
47+
"HTTPS only"
48+
"No hardcoded secrets"
49+
"SPDX headers on all files")))
50+
(testing
51+
(framework "OUnit2 for OCaml")
52+
(coverage-target 80))
1353
(versioning "SemVer")
14-
(documentation "AsciiDoc")
15-
(branching "main for stable"))
54+
(documentation "AsciiDoc with bilingual support")
55+
(branching "main for stable, feature branches for development"))
1656

17-
(design-rationale ()))
57+
(design-rationale
58+
(why-ocaml
59+
"Type safety for legal logic, Melange for browser reach, OCanren for declarative rules")
60+
(why-dutch-law
61+
"Strong moral rights, GDPR alignment, established IP framework")
62+
(why-not-creative-commons
63+
"CC lacks AI training consent, emotional lineage, quantum-proof attribution")
64+
(why-palimpsest-metaphor
65+
"Layers of meaning preserved through overwriting - like cultural memory")))

.machine_readable/STATE.scm

Lines changed: 86 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,107 @@
11
;; SPDX-License-Identifier: AGPL-3.0-or-later
2-
;; STATE.scm - Project state for palimpsest-license
2+
;; STATE.scm - Current project state for palimpsest-license
33
;; Media-Type: application/vnd.state+scm
44

55
(state
66
(metadata
7-
(version "0.0.1")
7+
(version "0.4.0")
88
(schema-version "1.0")
9-
(created "2026-01-03")
9+
(created "2024-08-01")
1010
(updated "2026-01-03")
1111
(project "palimpsest-license")
1212
(repo "github.com/hyperpolymath/palimpsest-license"))
1313

1414
(project-context
15-
(name "palimpsest-license")
16-
(tagline "")
17-
(tech-stack ()))
15+
(name "Palimpsest License")
16+
(tagline "Ethical open source licensing for humans and algorithms")
17+
(tech-stack
18+
(primary "OCaml" "Melange" "OCanren")
19+
(legacy "Haskell")
20+
(docs "AsciiDoc" "Markdown")
21+
(config "Nickel" "Nix" "Guix")))
1822

1923
(current-position
20-
(phase "initial")
21-
(overall-completion 0)
22-
(components ())
23-
(working-features ()))
24+
(phase "stable-release")
25+
(overall-completion 85)
26+
(components
27+
(license-text
28+
(status "complete")
29+
(version "0.4")
30+
(languages ("en" "nl")))
31+
(ocaml-implementation
32+
(status "active")
33+
(completion 70)
34+
(modules ("browser" "lib" "test")))
35+
(haskell-validator
36+
(status "legacy-migrating")
37+
(completion 100)
38+
(note "Migrating to OCaml"))
39+
(professional-guides
40+
(status "complete")
41+
(audiences ("archivists" "educators" "translators" "curators")))
42+
(ci-cd
43+
(status "complete")
44+
(workflows 20)
45+
(security-compliant #t)))
46+
(working-features
47+
("License v0.4 text (EN/NL)"
48+
"Professional integration guides"
49+
"OCaml browser module via Melange"
50+
"Haskell validator CLI"
51+
"Nix/Guix reproducible builds"
52+
"Wolfi container"
53+
"Nickel config schema")))
2454

2555
(route-to-mvp
26-
(milestones ()))
56+
(milestones
57+
(m1
58+
(name "OCaml validator complete")
59+
(status "in-progress")
60+
(items
61+
("Port Haskell validator to OCaml"
62+
"OCanren logic rules for license compliance"
63+
"Browser-based validation via Melange")))
64+
(m2
65+
(name "v1.0 license text")
66+
(status "pending")
67+
(items
68+
("Legal review by IP lawyers"
69+
"Dutch/Scottish jurisdiction alignment"
70+
"Community feedback incorporation")))
71+
(m3
72+
(name "Ecosystem adoption")
73+
(status "pending")
74+
(items
75+
("Creative Commons outreach"
76+
"Ubuntu Foundation proposal"
77+
"Podcast series launch")))))
2778

2879
(blockers-and-issues
2980
(critical)
30-
(high)
31-
(medium)
32-
(low))
81+
(high
82+
("Haskell to OCaml migration incomplete"))
83+
(medium
84+
("AGENTIC.scm and other SCM files need content"
85+
"Documentation freshness review pending"))
86+
(low
87+
("Elixir experiment archived but not deleted")))
3388

3489
(critical-next-actions
35-
(immediate)
36-
(this-week)
37-
(this-month))
90+
(immediate
91+
("Complete OCaml lib module"
92+
"Update SCM files with real content"))
93+
(this-week
94+
("Run full test suite on OCaml implementation"
95+
"Review professional guides for consistency"))
96+
(this-month
97+
("Submit to legal review"
98+
"Draft v1.0 roadmap")))
3899

39-
(session-history ()))
100+
(session-history
101+
(session
102+
(date "2026-01-03")
103+
(accomplishments
104+
("Fixed workflow security compliance"
105+
"SHA-pinned actions in language-policy.yml and rescript-deno-ci.yml"
106+
"Replaced npm with Deno npm compatibility"
107+
"Populated STATE.scm with actual project state")))))

templates/ECOSYSTEM.scm.template

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
;; SPDX-License-Identifier: AGPL-3.0-or-later
2+
;; ECOSYSTEM.scm - Ecosystem position template
3+
;; Media-Type: application/vnd.ecosystem+scm
4+
;;
5+
;; USAGE: Copy this file to .machine_readable/ECOSYSTEM.scm in your project
6+
;; and fill in the placeholders with your project's ecosystem relationships.
7+
8+
(ecosystem
9+
(version "1.0")
10+
(name "YOUR-PROJECT-NAME")
11+
(type "library|framework|application|service|specification")
12+
(purpose "What problem does this project solve?")
13+
14+
(position-in-ecosystem
15+
(category "your-domain") ;; e.g., "web-development", "data-science"
16+
(subcategory "your-niche") ;; e.g., "frontend-framework", "ml-ops"
17+
(unique-value
18+
;; What makes this project different?
19+
("Unique feature 1"
20+
"Unique feature 2")))
21+
22+
(related-projects
23+
;; Add relationships to other projects
24+
;; Types: sibling-standard, dependency, potential-consumer, inspiration
25+
;;
26+
;; (sibling-standard
27+
;; (name "related-project")
28+
;; (relationship "How it relates")
29+
;; (url "github.com/org/repo"))
30+
;;
31+
;; (dependency
32+
;; (name "library-you-use")
33+
;; (relationship "Core dependency")
34+
;; (version "^1.0.0"))
35+
;;
36+
;; (potential-consumer
37+
;; (name "who-might-use-this")
38+
;; (relationship "Target audience")
39+
;; (integration-point "How they would integrate"))
40+
)
41+
42+
(what-this-is
43+
;; Clear statements about what the project IS
44+
("A tool for..."
45+
"An implementation of..."))
46+
47+
(what-this-is-not
48+
;; Clear statements about what the project is NOT
49+
;; Helps set expectations
50+
("Not a replacement for..."
51+
"Not intended for...")))

templates/META.scm.template

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
;; SPDX-License-Identifier: AGPL-3.0-or-later
2+
;; META.scm - Architecture decisions and practices template
3+
;; Media-Type: application/meta+scheme
4+
;;
5+
;; USAGE: Copy this file to .machine_readable/META.scm in your project
6+
;; and document your architecture decisions and development practices.
7+
8+
(meta
9+
(architecture-decisions
10+
;; Document significant decisions using ADR format
11+
;; (adr-NNN
12+
;; (status "proposed|accepted|deprecated|superseded|rejected")
13+
;; (date "YYYY-MM-DD")
14+
;; (title "Short decision title")
15+
;; (context "What prompted this decision?")
16+
;; (decision "What was decided?")
17+
;; (consequences
18+
;; ("Positive or negative outcome 1"
19+
;; "Positive or negative outcome 2")))
20+
)
21+
22+
(development-practices
23+
(code-style
24+
;; Your formatting/linting tools
25+
())
26+
(security
27+
(principle "Your security philosophy")
28+
(requirements
29+
;; Specific security requirements
30+
()))
31+
(testing
32+
(framework "Your test framework")
33+
(coverage-target 80)) ;; Target coverage percentage
34+
(versioning "SemVer") ;; Or CalVer, etc.
35+
(documentation "Your doc format") ;; AsciiDoc, Markdown, etc.
36+
(branching "Your branching strategy")) ;; main, trunk-based, gitflow, etc.
37+
38+
(design-rationale
39+
;; Explain WHY you made key choices
40+
;; (why-technology-x
41+
;; "Explanation of why you chose this technology")
42+
))

0 commit comments

Comments
 (0)