Skip to content

feat: deliver LP1 isolated local proof topology - #5

Merged
Sythos merged 9 commits into
mainfrom
milestone/lp1
Aug 23, 2026
Merged

feat: deliver LP1 isolated local proof topology#5
Sythos merged 9 commits into
mainfrom
milestone/lp1

Conversation

@Sythos

@Sythos Sythos commented Aug 23, 2026

Copy link
Copy Markdown
Owner

Summary

  • deliver the frozen LP1 offline Docker Compose proof topology
  • verify disposable local CA and DNS services with trusted dual-stack IPv4 and IPv6 loopback resolution
  • verify readiness, restart continuity, named volumes, least privilege, no host networking, and no Docker socket
  • keep public DNS, public ACME, LDAP, PostgreSQL, vendor mail, and production exposure outside this local proof scope

Validation

  • npm test
  • npm run typecheck
  • GitHub Actions commit run 32663856989 (green)
  • Docker live proof executed in GitHub Actions on linux/amd64 and linux/arm64 build paths

The milestone branch is intended to be deleted after this PR is merged and the post-merge checks are green.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 3eec7dff1d

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread compose.yaml
Comment on lines +277 to +278
cap_drop:
- ALL

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Allow dnsmasq to enter its configured user

When the proof profile runs, local-dns starts as root with every capability removed, while its entrypoint invokes dnsmasq with --user=nobody --group=nogroup. The dnsmasq --user documentation states that dnsmasq changes its user ID after startup, but that transition requires CAP_SETUID and CAP_SETGID; without them it exits before becoming healthy, so the new live LP1 workflow cannot pass. Run the container directly as the unprivileged user, which is possible on port 5353, or retain the narrowly required capabilities.

Useful? React with 👍 / 👎.

umask 0007
chmod 0750 "$ca_dir"

if [[ ! -s "$ca_dir/ca.key" || ! -s "$ca_dir/ca.crt" ]]; then

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Refresh expired certificates in reused proof volumes

When an operator reuses an external lp1-ca-data volume after the generated seven-day validity period, this nonempty-file check skips CA regeneration, and the equivalent leaf check does the same. The proof client only verifies the signature and constructs a TLS context; neither operation validates the certificate dates, so the rehearsal can report certificate health while retaining expired CA and leaf material. Check validity before reuse and regenerate the affected chain when it has expired or is near expiry.

Useful? React with 👍 / 👎.


const application = await waitForHealthy('gulogulo-proof');
await waitForHealthy('local-ca');
await waitForHealthy('local-dns');

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Arm project cleanup before Compose starts resources

If docker compose up --detach creates the project network, volumes, or some containers and then fails—for example because one loopback port is already occupied—execution never reaches this assignment, so the finally block skips compose down. That leaves the supposedly disposable LP1 project behind and can make later runs collide with stale resources; enable cleanup before invoking up, or run down unconditionally for this uniquely named project.

Useful? React with 👍 / 👎.

@Sythos
Sythos merged commit b36357d into main Aug 23, 2026
2 checks passed
@Sythos
Sythos deleted the milestone/lp1 branch August 23, 2026 20:42
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