Architecture
Read these sources rather than reasoning from memory; they are canonical:
docs/manual/architecture.md— full architecture: threat model (T1–T6), connector-based vetting, two-repo promotion (quarantine → published), git facade, observability, roadmap (§14 has the phase plan; §14.2 the vetting connectors).docs/decisions/0001-use-java-for-the-product.md— why Java.docs/decisions/0002-toolchain-and-product-decisions.md— Boot 4, Maven+Nisse, JGit-embedded, JdbcClient+Flyway (no JPA), GraalVM native as release profile, OIDC-only SSO, app-as-BFF, PATs for git clients.docs/decisions/0003-agentic-first-frontend-stack.md— portal stack and the closed-SDLC verification harness (the load-bearing half).openspec/specs/— the living capability specs (IDs resolve via reqstool).
Invariants (never violate without an ADR)
- Served content is always an approved, SHA-pinned snapshot; upstream changes never propagate without re-ingestion + re-approval.
- The quarantine repository is never exposed by the facade.
- Every fetch and every admin action lands in the append-only ledger.
- The browser never holds tokens (app-as-BFF); git clients use hashed PATs.
- New behavior = reqstool requirement + SVC + test before implementation ships.
New decisions
Architecture-level choices get a new ADR in docs/decisions/ (next number),
referenced from docs/manual/architecture.md. Feature-level decisions go in the OpenSpec
change's design.md.