From: Thomas Walker Lynch
Date: Sat, 7 Mar 2026 10:47:22 +0000 (+0000)
Subject: revising docs for version 2.2
X-Git-Url: https://git.reasoningtechnology.com/%27%20%20%20full_path%20%20%20%27?a=commitdiff_plain;h=65aa1f4653a7cd4feaaa07e81df43cce77d0e6bf;p=Harmony
revising docs for version 2.2
---
diff --git a/administrator/document/00_Project_Structure.html b/administrator/document/00_Project_Structure.html
index b087d29..99cf663 100644
--- a/administrator/document/00_Project_Structure.html
+++ b/administrator/document/00_Project_Structure.html
@@ -33,8 +33,40 @@
A safe, predictable build and release workflow.
- Key Concepts
- Created vs. Made
+ Setup
+
+
+ Python programmers speak of virtual environment and activate. In contrast, Harmony users speak of roles and setup. Whatever the terminology, this is about setting up the environment by giving values to environment variables. In Python there is one set of environment variable values independent of user role. With Harmony there is a different set of variables depending on the role the user is taking on.
+
+
+
+ A person takes on a role by sourcing the top-level setup script and providing the target role. In a bash shell to take on the role of developer the command is: . setup developer, or source setup developer. As of this writing, the supported roles are: administrator, consumer, developer, and tester.
+
+
+
+ Behind the scenes, the setup script performs the following actions:
+
+
+
+ - Sources the project-wide setup (shared/authored/setup) to establish the core environment variables (e.g., REPO_HOME and PROJECT).
+ - Configures the PATH to include shared tools, library environments, and the specific <role>/tool directory.
+ - Changes the working directory into the specified role's workspace.
+ - Sources the <role>/tool/setup script. While the earlier steps apply the standard Harmony skeleton setup, this final step applies the role setup that is customized for this specific project.
+
+
+
+ Documentation
+ Documentation is placed closest to the role it pertains to.
+
+ - consumer/release/document/ : Documentation for end-users of released code (e.g., man pages, application manuals, library API references).
+ - administrator/document/ : Project-wide documentation covering structure, ontology, and workflow.
+ - developer/document/ : Documentation for developers, including coding standards and internal API guides.
+ - tester/document/ : Documentation for testers detailing test plans and tools.
+ - shared/document/ : Documentation on installing and configuring shared tools.
+
+
+ Key concepts
+ Authored vs. Made
Harmony divides the world into two categories:
@@ -46,44 +78,159 @@
This separation protects authored material from accidental overwrite and makes build artifacts fully disposable.
- Semantic Paths
+ Top-Level repository layout
- Directory names in Harmony are not decorative. Each directory name is a property shared among files. A full path forms a semantic sentence describing those files.
+ A team member will source the project setup file to take on a role. As of this writing, the supported roles are: administrator, developer, tester, and consumer.
- Top-Level Repository Layout
+
+ - administrator/ : Project-local tools and skeleton maintenance.
+ - developer/ : Primary workspace for developers.
+ - tester/ : Regression and validation workspace for testers.
+ - consumer/ : Consumption workspace holding the consumer/release directory.
+ - shared/ : Shared ecosystem tools and global environments.
+
+
+ The administrator work area
- A team member will source the project setup file to take on a role. As of this writing, the supported roles are: administrator, developer, tester, and consumer.
+ This directory holds the tools and documentation used to manage the project as a whole. It includes the HTML documentation for the project ontology and workflow, as well as project-local tools utilized by the administrator to maintain the Harmony skeleton.
+ The developer work area
+
+ This directory is entered by first going to the top-level directory of the project, then sourcing . setup developer.
+
- - administrator/ â Project-local tools and skeleton maintenance.
- - developer/ â Primary workspace for developers.
- - tester/ â Regression and validation workspace for testers.
- - consumer/ â Consumption workspace holding the release directory.
- - shared/ â Shared ecosystem tools and global environments.
+ - authored/ : Human-written source. Tracked by Git.
+ - made/ : Tracked artifacts generated by tools (e.g., links to CLI entry points).
+ - experiment/ : Try-it-here code. Short-lived spot testing.
+ - scratchpad/ : Git-ignored directory. Holds all intermediate build outputs, including the stage directory for releases.
+ - tool/ : Developer-specific tools (like the release and make scripts).
- The Consumer Tree
+ The tester work area
+
+ This directory is dedicated to formal testing, including regression suites. While a developer can run and keep informal spot tests in their experiment/ directory, any experiment promoted to a formal test is moved here. This enforces the boundary between writing code and validating it.
+
+
+ The shared tree
+
+ This directory contains ecosystem tools and global environments available to all roles. This includes shared authored tools, as well as third-party installations (like Python virtual environments or compilers) required by the project.
+
+
+ The consumer tree
The consumer/release/ tree is where developers put work product that is ready to be consumed. The entire consumer/release directory is git-ignored and treated as a transient deployment target.
- Artifacts arrive in the release/ tree only when the developer invokes the release script, which performs a flat-copy from the developer's scratchpad/stage directory.
+ Artifacts arrive in the consumer/release/ tree only when the developer invokes the release script, which performs a flat-copy from the developer's scratchpad/stage directory.
- The Developer Tree
+ Releases
- This directory is entered by first going to the top-level directory of the project, then sourcing . setup developer.
+ While the workflow document provides a deep dive, it is helpful to understand how directories relate to the concept of a release. There is a distinction between a developer release and a project release.
- - authored/ â Human-written source. Tracked by Git.
- - made/ â Tracked artifacts generated by tools (e.g., links to CLI entry points).
- - experiment/ â Try-it-here code. Short-lived spot testing.
- - scratchpad/ â Git-ignored directory. Holds all intermediate build outputs, including the stage directory for releases.
- - tool/ â Developer-specific tools (like the release and make scripts).
+ - Developer Release: A developer releases when they determine a work product is ready for testing. They invoke a script to copy artifacts into the consumer/release/ directory.
+ - Project Release: A project is released when the tester and other team members determine the code in the consumer/release/ directory is fully validated and ready for end users. This is enacted by creating a release branch on the version control system (e.g., GitHub), not by moving files to another directory.
+ Directory names
+
+ Each directory name is a property shared among the files contained within it. Hence, a full path forms a semantic sentence describing each file within it.
+
+
+ Because a directory name represents a property, it is rarely plural. For example, when each and every file in a directory is a test, the directory is named test.
+
+
+ When a property name is plural, it describes something about the internal nature of each file. For instance, a directory named constants implies that each individual file inside it (say, physics.py, math.py, and cosmology.py) provides a collection of multiple constants.
+
+
+ The following list presents each property type in order of preference that we use when naming directories.
+
+
+ - Role Association (administrator, developer, tester, consumer): Identifies the persona, whether human or AI, intended to interact with the files.
+ - Provenance (authored, made): Indicates whether the file was created by an intellect or mechanically produced by a tool.
+ - Capability (tool, document, experiment): Describes the primary function or structural nature of the file.
+ - Lifecycle State (scratchpad, release): Denotes the persistence, volatility, or promotion status of the file.
+ - Tracking Status (tracked, untracked): Specifies the version control expectations for the artifacts.
+
+
+
+ In the Unix file system, a person must choose a single string to use as the directory name. Hence, we typically choose a primary property, though when needed, we use multiple property names separated by an underscore.
+
+
+ The version 2.2 Harmony directory tree
+
+ 2026-03-07 10:38:58 Z [Harmony:administrator] Thomas_developer@StanleyPark
+ §/home/Thomas/subu_data/developer/project§
+ > tree Harmony
+ Harmony
+ âââ 0pus_Harmony
+ âââ administrator
+ â  âââ document
+ â  â  âââ 00_Project_Structure.html
+ â  â  âââ 01_Workflow_Build_Contract.html
+ â  â  âââ Harmony.md
+ â  â  âââ setup.js
+ â  âââ tool
+ â  âââ after_pull
+ â  âââ archive
+ â  âââ release
+ â  âââ setup
+ âââ consumer
+ â  âââ scratchpad
+ â  âââ tool
+ â  âââ env
+ âââ developer
+ â  âââ authored
+ â  â  âââ hello.cli.c
+ â  âââ document
+ â  â  âââ 02_RT_Code_Format.html
+ â  â  âââ 03_Naming_and_Directory_Conventions.html
+ â  â  âââ 04_Language_Addenda.html
+ â  â  âââ ontology.org
+ â  â  âââ setup.js
+ â  âââ experiment
+ â  âââ made
+ â  âââ scratchpad
+ â  âââ tool
+ â  âââ do_all
+ â  âââ make
+ â  âââ makefile
+ â  âââ release
+ â  âââ setup
+ âââ LICENSE
+ âââ scratchpad
+ â  âââ Harmony__79f9d52__2026-03-07_085628Z.tar
+ âââ setup
+ âââ shared
+ â  âââ authored
+ â  â  âââ scratchpad
+ â  â  âââ setup
+ â  â  âââ style
+ â  â  âââ version
+ â  âââ document
+ â  â  âââ install_generic.org
+ â  â  âââ install_Python.org
+ â  â  âââ setup.js
+ â  âââ made
+ â  âââ style_directory_dict.js
+ â  âââ third_party
+ â  âââ RT-style-JS_public -> ../../../RT-style-JS_public/
+ â  âââ upstream
+ âââ tester
+ âââ authored
+ â  âââ test_routine.sh
+ âââ RT_Format
+ â  âââ RT_Format
+ â  âââ RT_Format.el
+ â  âââ test_0_data.c
+ â  âââ test_1_data.py
+ âââ tool
+ âââ setup
+
+