docs: reorganise -- current reference gathered, finished work archived, superseded and dead ideas marked as such

docs/CLAUDE.md Phase 2, 2026-10-14.  All moves by git mv; every archived
file carries a header saying what it is, why, and where to look instead.

- docs/reference/ (new): roadmap and versioning policy, M7.1, word-ACL
  design, kernel args, hosted acceptance test, dictionary, primitives,
  ontology, L8 table -- previously spread over docs/, docs/lithosananke/
  and docs/03-architecture/.
- docs/working/archive/historical/: finished work (session plan, test-gap
  audit, birthing plan, fix write-ups, the January architecture draft).
- docs/working/archive/superseded/: the Hermes-VM Tripod docs and July
  Hermes designs (-> FABRIC-3.5/3.6), the StarForth roadmap, every working
  doc already flagged superseded or obsolete.
- docs/working/archive/dead/: the hal_* target contract (never adopted),
  L4Re, metrics-and-knobs.
- Papers and proposals into docs/working/papers/.
- References rewritten across the repo (not logs/, not docs/patent/);
  CLAUDE.md's documentation section rewritten.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
rajames
2026-10-14 16:03:56 -04:00
co-authored by Claude Opus 5.5
parent 1a4b163861
commit 7aed588f78
116 changed files with 305 additions and 175 deletions
@@ -1,347 +0,0 @@
// Moved from docs/src/L4RE_INTEGRATION_TODO.adoc to docs/working/scratch/src/L4RE_INTEGRATION_TODO.adoc on 2026-06-16 (docs reorg Phase 2)
== L4Re Integration TODO
:toc: left
:toc-title: Contents
:toclevels: 3
xref:./README.adoc[← Back to Documentation Index]
=== Overview
The platform abstraction layer is complete and working for standalone
POSIX builds. This document outlines the specific steps needed to
integrate into the StarshipOS L4Re BID build system.
'''''
=== Pre-Integration Checklist
* [x] Platform abstraction layer implemented
* [x] POSIX backend tested and working
* [x] L4Re backend code written
* [x] Standalone builds work with `+make L4RE=1+`
* [ ] Platform files copied to StarshipOS tree
* [ ] BID Makefile updated
* [ ] L4Re build tested in StarshipOS tree
'''''
=== Integration Steps
==== 1. Copy Platform Files to StarshipOS
*Source Location:*
`+/home/rajames/CLionProjects/StarForth/src/platform/+`
*Destination:*
`+/home/rajames/CLionProjects/StarshipOS/l4/pkg/starforth/server/src/platform/+`
*Files to Copy:*
[source,bash]
----
cd /home/rajames/CLionProjects/StarForth
mkdir -p /home/rajames/CLionProjects/StarshipOS/l4/pkg/starforth/server/src/platform
cp src/platform/platform_init.c \
/home/rajames/CLionProjects/StarshipOS/l4/pkg/starforth/server/src/platform/
cp src/platform/time_l4re.c \
/home/rajames/CLionProjects/StarshipOS/l4/pkg/starforth/server/src/platform/
# Note: Do NOT copy time_posix.c - not needed in L4Re build
----
*Header File:*
[source,bash]
----
cp include/platform_time.h \
/home/rajames/CLionProjects/StarshipOS/l4/pkg/starforth/server/include/
----
'''''
==== 2. Update BID Makefile
*File:*
`+/home/rajames/CLionProjects/StarshipOS/l4/pkg/starforth/server/src/Makefile+`
*Changes Needed:*
[source,makefile]
----
# Add platform sources to SRC_C list
SRC_C = \
main.c \
log.c \
io.c \
vm.c \
vm_debug.c \
word_registry.c \
device_map.c \
stack_management.c \
panic.c \
repl_io.c \
memory_management.c \
dictionary_management.c \
vm_api.c \
bam.c \
platform/platform_init.c \ # ← ADD THIS
platform/time_l4re.c \ # ← ADD THIS
word_source/arithmetic_words.c \
# ... rest of existing files ...
# Add librtc to REQUIRES_LIBS
REQUIRES_LIBS = libc_be_l4re libc l4re l4re_c l4sys l4util libsigma0 libblock-device librtc
# ^^^^^^ ADD THIS
----
*Note:* BID already sets `+-D__l4__+` at line 77-78, so platform
selection happens automatically.
'''''
==== 3. Update Core Source Files in StarshipOS
These files need the same changes made to standalone StarForth:
*File:* `+server/src/log.c+`
* [ ] Add `+#include "../include/platform_time.h"+` to includes
* [ ] Replace `+get_timestamp()+` implementation with platform API calls
* [ ] Change: `+time(NULL)+` → `+sf_realtime_ns()+`
* [ ] Change: `+localtime()+` + `+strftime()+` →
`+sf_format_timestamp()+`
*File:* `+server/src/profiler.c+` (if it exists in L4Re version)
* [ ] Add `+#include "../include/platform_time.h"+` to includes
* [ ] Replace `+get_time_ns()+` implementation
* [ ] Change: `+clock_gettime(CLOCK_MONOTONIC)+` → `+sf_monotonic_ns()+`
*File:* `+server/src/main.c+`
* [ ] Add `+#include "platform_time.h"+` to includes
* [ ] Add `+sf_time_init();+` call at start of `+main()+` (before any
logging)
'''''
==== 4. Verify RTC Library Availability
*Check RTC package exists:*
[source,bash]
----
cd /home/rajames/CLionProjects/StarshipOS
ls -la l4/pkg/rtc/
ls -la l4/build-x86_64/lib/*/librtc.a
----
*Expected files:*
* `+l4/pkg/rtc/lib/client/librtc.cc+` - RTC client library
* `+l4/pkg/rtc/include/rtc+` - C++ header
* `+l4/pkg/rtc/include/rtc.h+` - C header
* `+l4/build-x86_64/lib/amd64_gen/l4f/librtc.a+` - Compiled library
*If missing:*
[source,bash]
----
cd l4/pkg/rtc
make
----
'''''
==== 5. Update Loader Configuration
*File:* Choose your loader script (e.g., `+l4/conf/modules.list+` or a
`+.lua+` file)
*Add RTC server startup:*
[source,lua]
----
-- Start RTC server (needed for wall-clock time)
ld:start({
caps = {
vbus = vbus_l4re,
icu = L4.default_loader:new_channel(),
},
log = L4.Env.log:m("rws", "magenta"),
}, "rom/rtc");
-- StarForth with RTC capability
ld:start({
caps = {
rtc = ld:wait("rtc", 1000), -- Wait for RTC server, timeout 1s
-- ... other caps ...
},
log = L4.Env.log:m("rws", "cyan"),
}, "rom/starforth");
----
*Note:* StarForth will work without RTC capability, but timestamps will
show epoch (1970).
'''''
==== 6. Build and Test
*Clean build:*
[source,bash]
----
cd /home/rajames/CLionProjects/StarshipOS
make clean-l4
make l4
----
*Check for platform files in build:*
[source,bash]
----
ls -la l4/build-x86_64/pkg/starforth/server/OBJ-amd64_gen/platform/
# Should see: platform_init.o, time_l4re.o
----
*Launch in QEMU:*
[source,bash]
----
scripts/runos.sh
----
*Verify in StarForth REPL:*
* Logging should show timestamps (may be 1970-01-01 if no RTC server)
* Profiler should work (uses KIP clock, doesn’t need RTC)
* No crashes or missing symbol errors
'''''
=== Verification Tests
==== Test 1: Basic Functionality
[source,forth]
----
\ In StarForth REPL:
1 2 + . \ Should print 3
: TEST 42 . ; \ Should work
TEST \ Should print 42
----
==== Test 2: Profiler (Monotonic Time)
[source,bash]
----
# From shell:
./build-x86_64/bin/amd64_gen/l4f/starforth --profile 2 --run-tests --profile-report
----
Should show timing information without errors.
==== Test 3: Logging (Real Time)
[source,bash]
----
./build-x86_64/bin/amd64_gen/l4f/starforth --log-debug
----
Should show timestamps in log output (may be 1970 epoch if no RTC).
==== Test 4: RTC Server Integration
[source,bash]
----
# In QEMU, after starting with RTC server
# Check for RTC capability
grep "RTC" /proc/l4re/caps
----
If RTC server is running and capability provided, timestamps should be
correct.
'''''
=== Troubleshooting
==== Build Errors
*Error:* `+platform_init.c: No such file or directory+` *Fix:* Check
that platform directory was created and files copied correctly
*Error:* `+undefined reference to l4_kip_clock_ns+` *Fix:* Make sure
linking against `+l4re+` library (should be in REQUIRES_LIBS)
*Error:* `+undefined reference to L4rtc::Rtc::get_timer+` *Fix:* Add
`+librtc+` to REQUIRES_LIBS
*Error:* `+fatal error: platform_time.h: No such file or directory+`
*Fix:* Copy header to `+server/include/+` directory
==== Runtime Errors
*Warning:* "`RTC server not found, assuming 1.1.1970`" *Fix:* Add RTC
server to loader configuration and provide `+rtc+` capability
*Issue:* Timestamps show 1970-01-01 *Fix:* Either RTC server not
running, or capability not provided to StarForth
*Issue:* Profiler shows 0 elapsed time *Fix:* Check that
`+sf_monotonic_ns()+` is being called (shouldn’t need RTC)
'''''
=== Rollback Plan
If integration fails, revert by:
[arabic]
. Remove platform files from `+SRC_C+` in Makefile
. Remove `+librtc+` from `+REQUIRES_LIBS+`
. Revert changes to `+log.c+`, `+profiler.c+`, `+main.c+`
. Delete `+platform/+` directory
. Rebuild: `+make clean-l4 && make l4+`
The L4Re build will work as before (using direct POSIX calls via libc).
'''''
=== Notes
* *BID build system* automatically sets `+-D__l4__+` flag (line 77-78 in
Makefile)
* *Platform selection* happens at compile-time based on `+__l4__+`
define
* *No conditional Makefiles needed* - BID handles everything
* *RTC is optional* - StarForth works without it (uses epoch time)
* *Profiler always works* - uses KIP clock, independent of RTC
'''''
=== Success Criteria
* [ ] StarForth builds cleanly in L4Re tree
* [ ] No linker errors for platform functions
* [ ] REPL starts without crashes
* [ ] Logging shows timestamps (even if 1970)
* [ ] Profiler works with `+--profile+` flag
* [ ] Tests pass with `+--run-tests+`
* [ ] If RTC server running: correct wall-clock time
* [ ] If no RTC: graceful fallback to epoch time
'''''
=== Future Enhancements
* [ ] Add RTC FORTH words (GET-TIME, SET-TIME)
* [ ] Expose monotonic timer to FORTH (for benchmarking)
* [ ] Add timezone support (currently UTC only)
* [ ] Support for RTC alarm/wakeup features
* [ ] Performance comparison: POSIX vs L4Re backend