Skip to content

docs: reorganize README into project context + developer guide#62

Closed
elmol wants to merge 68 commits into
elmol:mainfrom
biotexturas:docs/readme-reorganize
Closed

docs: reorganize README into project context + developer guide#62
elmol wants to merge 68 commits into
elmol:mainfrom
biotexturas:docs/readme-reorganize

Conversation

@elmol
Copy link
Copy Markdown
Owner

@elmol elmol commented Mar 22, 2026

Summary

  • Reorganized README into two clear parts: Project Context (overview, problem, solution, vision, roadmap) and Developer Guide (technical docs, setup, CI)
  • Renamed "The Wire — Walking Skeleton" section to "End-to-End Verification"
  • Added "Developer Guide" separator heading between the two parts
  • No content was changed — only section ordering and the one rename

Test plan

  • Verify all sections are present and content is unchanged (git diff main shows only moves)
  • Verify section order matches the specification
  • Verify "The Wire" heading was renamed to "End-to-End Verification"

🤖 Generated with Claude Code

elmol and others added 30 commits March 20, 2026 22:12
Rewrite README with TerraGenesis identity (microscopy DeSci application)
while preserving all HardTrust technical content. Add "Built on HardTrust"
section, hackathon proposal, and update CLAUDE.md with project context.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
docs: integrate TerraGenesis branding and proposal
Edited link for TerraScope
Fixed TerraScope link Markup typo
Update repo references from elmol/hardtrust to biotexturas/terra-genesis.
Rename HARDTRUST_VERSION env var to TERRAGENESIS_VERSION in install scripts.
Update release naming, deployment docs, and spec URLs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
chore: adapt CI/CD and install scripts for TerraGenesis
Add Signable trait with prehash() and signature_hex() methods.
Implement for existing Reading (moved reading_prehash body into it)
and new Capture type. Add generic sign<T>/verify<T> functions.
Keep sign_reading/verify_reading as backwards-compatible wrappers.

Add Capture and CaptureFile domain types with Signable implementation.
Add InvalidPayload variant to ProtocolError.

All 25 protocol tests pass (17 existing + 8 new Capture tests).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
refactor: extract Signable trait and generic sign/verify (s2a.1-v1)
…-v2)

Add `device capture --cmd <command> --output-dir <path>` subcommand that:
- Executes external command via bash -c
- Reads all output files, computes SHA-256 hashes
- Builds sorted file manifest with content_hash
- Signs Capture struct using protocol::sign
- Writes capture.json to current directory

Add sha2 dependency for SHA-256 file hashing.
Add helper functions: hash_file, compute_content_hash, collect_capture_files,
create_signed_capture in device/src/lib.rs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
feat: add device capture command (s2a.1-v2)
Add generic verify_device_data<T: Signable> in attester lib, keep
verify_device as backwards-compatible wrapper. Auto-detect file format
in verify command by checking for "content_hash" (Capture) vs
"temperature" (Reading). No new CLI flags needed.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…capture

feat: extend attester verify to support capture files (s2a.1-v3)
…a.2-v1)

Create terrascope/capture.sh — hardware adapter for TerraScope microscopes.
Auto-detects libcamera-still or raspistill, captures image, generates
metadata.json with camera info, resolution, timestamp, and hostname.
Configurable via TERRASCOPE_RESOLUTION and TERRASCOPE_QUALITY env vars.

Add ADR-0009 documenting the capture script as hardware adapter pattern.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
feat: add TerraScope capture script with auto-detect and metadata (s2a.2-v1)
…-v2)

- Make --cmd optional with default /usr/local/lib/terrascope/capture.sh
- Show helpful error when default script missing (suggests install or --cmd override)
- Pass output_dir as argument to capture command (per ADR-0009 contract)
- install-device.sh now downloads and installs capture script
- release.yml uploads terrascope/capture.sh as release artifact

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
feat: default capture script path + install + release pipeline (s2a.2-v2)
…ecksum, README, key helper (s2a-debt)

- Fix 1: Clean output-dir before capture to prevent stale files
- Fix 2: Replace json.contains("content_hash") with serde untagged enum
- Fix 3: Pass output_dir via bash -c positional args (handles spaces)
- Fix 4: Add SHA-256 checksum for capture script in install + release
- Fix 5: Add Capture section to README, update repo structure, check scope
- Fix 6: Extract load_device_key() to eliminate emit/capture duplication

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Serde untagged enum reports "did not match any variant" instead of
"missing field" — accept both patterns in test assertions.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
fix: review findings — clean dir, serde enum, quoted paths, checksum, README, key helper
- Create scripts/mock-capture.sh — deterministic mock following ADR-0009
- Case 3: device capture with mock → attester verify → VERIFIED
- Case 4: fake capture.json → attester verify → UNVERIFIED
- Update cleanup to remove capture artifacts
- Cases 1 + 2 (reading) unchanged

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Append "$1" to the command string so external scripts receive the
output directory as their first positional argument. Fixes e2e failure
where mock-capture.sh wasn't receiving the output dir.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
test: add capture e2e cases to The Wire (s2a.3-v1)
…es (s0.20)

- Add Release & Installation section with biotexturas/terra-genesis URLs
- Add Configuration section (env vars table)
- Add CI section (lint/test/e2e)
- Update Repository Structure (terrascope/, release.toml, install scripts)
- Check all 4 Hackathon Scope items
- Commit all untracked specs (9 files) and stories (2 files)
- Add capture.json and capture-output/ to .gitignore

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
docs: full sync — README, specs/stories, gitignore, branch cleanup (s0.20)
…tory in artifact

The upload-artifact action preserved the terrascope/ directory, so the
file landed at artifacts/terrascope/capture.sh instead of artifacts/capture.sh.
Fix by copying to terrascope-capture.sh at repo root before upload.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… prehash

Adds CaptureEnvironment (script_hash, binary_hash, hw_serial, camera_info)
to the Capture domain type. Updates Signable::prehash to include environment
fields, ensuring any env change invalidates the signature.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds collect_environment() and detect_camera_info() to device lib.
Updates capture handler to collect and sign environment metadata
(script hash, binary hash, hw serial, camera info).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ecking

Prints environment info for captures. When --release-hashes is provided,
compares script_hash and binary_hash against known-good values and prints
MATCH or MISMATCH per field.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Case 5: capture + verify with --release-hashes → environment MATCH
Case 6: tampered script + verify → MISMATCH, signature still VERIFIED

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
elmol and others added 28 commits March 21, 2026 11:38
feat: on-chain capture verification via verifyCapture view function (s2b.1-v1)
…t function (s2b-debt-v1)

Merge the separate verifyCapture (4-param) and verifyEnvironment into a
single verifyCapture (6-param) that returns (valid, signer, scriptMatch,
binaryMatch). Add setApprovedHashes for on-chain env hash storage.

Attester CLI now makes ONE contract call for full capture verification,
falling back to embedded hashes when no on-chain approved hashes are set.

E2E Cases 5-6 updated to use on-chain env verification.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…rify

refactor: unify verifyCapture + verifyEnvironment (s2b-debt-v1)
…ation (s2b-debt-v2)

RPi device tree serial (/sys/firmware/devicetree/base/serial-number) includes
a null terminator that was not stripped, causing keccak256 hash mismatch between
device init (no \0) and device capture (\0 included) → UNVERIFIED on-chain.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
fix: strip trailing null byte from RPi serial (s2b-debt-v2)
- Update "The Wire" section with 6-case e2e description
- Add "On-Chain Verification" section documenting verifyCapture and environment attestation
- Add OZ ECDSA and ADR-0010 to Key Design Decisions
- Version bump 0.1.0 → 0.3.0
- Add missing s2a.4 story
- Generate SHA256SUMS with real release hashes
- Include release and debt specs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
chore: release v0.3.0 — on-chain verification + environment attestation
feat: analyzer images, sign, metadata and in-chain data
- Colors updated to teal/purple/yellow biotexturas palette
- All "HardTrust" replaced with TerraGenesis in UI (footer footnote only)
- Story points and workflow sections removed
- 3 inline steps added (Capture → Sign → Verify)
- Verify section promoted to primary position (before registry)
- 9+ result pills replaced with big verdict card (VERIFIED/NOT VERIFIED)
- Register form collapsed behind attester-only toggle
- Status grid moved to footer
- index.html title and meta updated
- "devices" → "microscopes" throughout

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace dark glassmorphism with light neutral palette:
- Background #f8f9fa, white cards, #e2e8f0 borders
- Remove all backdrop-filter, rgba panels, radial gradients
- Teal #5BA89A as only accent color, solid buttons (no gradients)
- Softer verdict cards, light badge backgrounds
- 12px border-radius, generous whitespace, clean shadows
- Footer on light gray #f1f5f9

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Header: biotexturas logo (48px) + bold TERRAGENESIS text with tagline
- Hero: DevicePhoto.jpeg on right side, teal accent border-top
- How It Works: microscopy capture as step 1 icon, emoji icons for steps 2-3
- Verify: demo capture.jpg as placeholder preview before upload
- Footer: biotexturas logo (24px) next to attribution
- Cards: hover effect (translateY + shadow) on interactive elements
- Favicon: biotexturas-logo.png

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
feat: TerraGenesis branding + UI simplification (s2c-web-v2)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…dmap (s0.22)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
docs: README narrative rewrite — DeSci vision, web portal, roadmap (s0.22)
… GenLayer (s0.22)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
docs: enrich What's Next — security roadmap, fingerprinting, GenLayer
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
chore: sync cleanup — untracked docs, relocate ADR-0010, remove duplicate
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@elmol elmol closed this Mar 22, 2026
@elmol elmol deleted the docs/readme-reorganize branch March 22, 2026 06:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants