Skip to content

Build production Scripture library through Phase 3 - #1

Merged
Llewellynvdm merged 6 commits into
mainfrom
agent/bootstrap-scripture-library
Jul 26, 2026
Merged

Build production Scripture library through Phase 3#1
Llewellynvdm merged 6 commits into
mainfrom
agent/bootstrap-scripture-library

Conversation

@Llewellynvdm

@Llewellynvdm Llewellynvdm commented Jul 26, 2026

Copy link
Copy Markdown
Member

Purpose

Build the GetBible\\Scripture\\ Composer package as the production Bible application layer above getbible/sword, while preserving the exact getbiblesword.ndjson/v1 extraction contract and keeping remote module mutation explicit.

Commit structure

  1. Phase 0/1 — foundation and installed-module MVP: Joomla DI/Event/Filesystem/Registry composition, strict ABI-v1 stream validation, immutable indexed snapshots, and lazy Translation → Book → Chapter → Verse objects.
  2. Phase 2 — production provisioning boundary: explicit backend capabilities, selected/all install and refresh contracts, removal, ordered per-module outcomes, bounded shared/exclusive module-root locking, lifecycle events, and cache invalidation.
  3. Phase 3 — automated maintenance: initialize(), refresh(), refreshIfDue(), durable success/failure state, whole-run locking, per-module failure isolation, Joomla Console commands, a Joomla Scheduled Tasks bridge, health output, and cron/systemd operations guidance.
  4. Quality hardening: explicit PSR-12 targeting, verified untrusted JSON shapes, typed Joomla container resolution, native-extension analysis declarations, and PHPStan level-max cleanup.

Production properties

  • Constructors remain free of network and full-module side effects.
  • Complete exports are validated before activation.
  • Snapshot generations are immutable and activated atomically.
  • Native readers and future writers use matching bounded shared/exclusive locks.
  • Scheduled runs cannot overlap and failures never advance the last-success interval.
  • One broken translation does not prevent healthy translations from completing.
  • Runtime provisioning requires both explicit policy and an advertised backend capability.
  • Public infrastructure is composed with Joomla Framework DI, Event, Filesystem, Registry, and Console packages.

Native boundary

getbible/sword 0.1.0 / getBibleSword 0.3.0 ABI v1 can list and export installed modules but cannot safely download, update, or remove them. The default adapter reports those capabilities as unavailable instead of implementing unsafe direct archive downloads. The public provisioning API is dependency-injected so a future additive native installer can be substituted without changing consumers.

Validation

Final GitHub Actions run: CI #5

  • Composer validation: pass.
  • Dependency resolution: pass on PHP 8.2, 8.3, 8.4, and 8.5.
  • PHPUnit: 21 tests and 162 assertions pass on every PHP version.
  • PSR-12: pass.
  • PHPStan level max: pass with zero findings.
  • Independent PHP syntax parsing: 79 source, test, and stub files.
  • git diff --check: pass.

Review status

Phases 0–3 are complete and all required checks are green. Ready for review.

@Llewellynvdm
Llewellynvdm marked this pull request as ready for review July 26, 2026 13:53
@Llewellynvdm
Llewellynvdm merged commit bbfb6b2 into main Jul 26, 2026
4 checks passed
@Llewellynvdm
Llewellynvdm deleted the agent/bootstrap-scripture-library branch July 26, 2026 15:14
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.

1 participant