From d6c7333d37638447a2a41c762574de8851665934 Mon Sep 17 00:00:00 2001 From: t Date: Sat, 11 Jul 2026 12:15:04 -0600 Subject: Document deployment and stop tracking generated output --- _docs/IMPLEMENTATION_STATUS.md | 30 ++++++++++++++++++ _docs/OPERATIONS.md | 70 ++++++++++++++++++++++++++++++++++++++++++ about/index.html | 68 ---------------------------------------- feed.xml | 13 -------- index.html | 59 ----------------------------------- notes/index.html | 47 ---------------------------- projects/index.html | 46 --------------------------- weblog/index.html | 41 ------------------------- 8 files changed, 100 insertions(+), 274 deletions(-) create mode 100644 _docs/IMPLEMENTATION_STATUS.md create mode 100644 _docs/OPERATIONS.md delete mode 100644 about/index.html delete mode 100644 feed.xml delete mode 100644 index.html delete mode 100644 notes/index.html delete mode 100644 projects/index.html delete mode 100644 weblog/index.html diff --git a/_docs/IMPLEMENTATION_STATUS.md b/_docs/IMPLEMENTATION_STATUS.md new file mode 100644 index 0000000..cc34e80 --- /dev/null +++ b/_docs/IMPLEMENTATION_STATUS.md @@ -0,0 +1,30 @@ +# Project implementation status + +Status as of 2026-07-11. + +- [x] Fictional examples are retained only under underscore-prefixed names and + are absent from public listings and the feed. +- [x] The Weft Go generator, template conventions, Markdown parsing, inventory, + link rewriting, output collision checks, relative links, Atom generation, + safe output ownership, rollback, and stale cleanup are implemented and + covered by runnable tests. +- [x] Existing pages are represented by templates or Markdown sources and build + back to in-place HTML/XML outputs; `style.css` is unchanged. +- [x] Inherited prose is enumerated in `PROSE_AUDIT.md`; no replacement post + prose was invented. +- [x] The generated site has an empty valid Atom feed, no public fictional + entries, and a consistent CC BY 4.0 footer and colophon disclosure. +- [x] `.gitignore` covers generated HTML, `feed.xml`, the ownership manifest, + and transaction directories; shared Syncthing rules exclude generated HTML. +- [x] Generated HTML and `feed.xml` are ignored and absent from version + control, so a fresh checkout can build without bypassing output ownership. +- [x] Caddy protection and the locked, delayed, failure-logged cron invocation + are recorded in `OPERATIONS.md`. +- [ ] External: install and schedule Weft on the server, activate the Caddy + rules, and validate them against the deployed host. +- [ ] External: connect deliberately selected real vault content and verify its + Syncthing/privacy behavior. +- [ ] External: restore Notes links only after those real notes are ready. + +Notes navigation and homepage note links intentionally remain commented out; +there is no selected real vault content to publish yet. diff --git a/_docs/OPERATIONS.md b/_docs/OPERATIONS.md new file mode 100644 index 0000000..a4a6d13 --- /dev/null +++ b/_docs/OPERATIONS.md @@ -0,0 +1,70 @@ +# Weft operations + +## Caddy source protection + +Before enabling public notes, place these matchers before `file_server` in the +site block and reload Caddy: + +```caddyfile +@underscore path_regexp underscore (^|/)_[^/]* +respond @underscore 404 + +@templates path *.tmpl +respond @templates 404 +``` + +The first matcher denies any URL with an underscore-prefixed path component, +including an entire `_private/` subtree. The second denies template sources. +Markdown is intentionally not denied and may remain downloadable. Validate the +active configuration with `caddy validate --config /etc/caddy/Caddyfile` before +`systemctl reload caddy`. + +## Syncthing + +Each device keeps this device-local, non-synchronized `.stignore` at the vault +root: + +```text +#include .stignore.shared +``` + +The synchronized `.stignore.shared` contains: + +```text +*.html +``` + +The local include lets every device load one shared rule without trying to +synchronize `.stignore` itself. The shared rule excludes generated HTML at +every depth in both directions while leaving Markdown synchronized. + +## Scheduled build + +Install the Weft binary at `/usr/local/bin/weft`, then use a cron entry like: + +```cron +17 * * * * sleep 60 && flock -n /run/lock/weft.lock /usr/local/bin/weft /srv/tjp.lol >>/var/log/weft.log 2>&1 || logger -t weft 'build failed or lock unavailable' +``` + +The 60-second delay gives Syncthing time to settle, `flock -n` prevents +overlapping builds, build output goes to `/var/log/weft.log`, and failure is +also recorded in the system log under the `weft` tag. Adjust the delay only +after observing the server's real sync latency. These paths assume a root +crontab; for an unprivileged account, use lock and log paths it can write. + +## Rollout + +- [ ] Install Weft and run one manual build on the server. +- [ ] Add and validate the Caddy matchers above before serving the source tree. +- [ ] Put the local `.stignore` on every Syncthing device and synchronize + `.stignore.shared`. +- [ ] Connect only the deliberately selected public vault content. +- [ ] Verify generated note pages, internal links, and underscore privacy on the + deployed host. +- [ ] Install the locked, delayed cron build and confirm a forced failure is + logged. +- [ ] Restore Notes navigation and homepage links only after real public notes + are present and verified. + +Notes remains hidden: no real selected vault content exists in this repository, +so vault connection and server activation are intentionally pending. diff --git a/about/index.html b/about/index.html deleted file mode 100644 index 99f9a22..0000000 --- a/about/index.html +++ /dev/null @@ -1,68 +0,0 @@ - - - - - -About & colophon — tjp.lol - - - - -
- -
-

~tjp $_

- -
- -
-
-
-

About

-
-
-

I'm tjp — an elder-millennial software engineer living in Salt Lake City, Utah. I write mostly Python, spend too long in the terminal, and care about software that's small, legible, and built to last.

-

This site is where I keep my writing. If you want to reach me, t@tjp.lol is the best way.

- -

Elsewhere

- -
- - -
-
- - - -
- - - diff --git a/feed.xml b/feed.xml deleted file mode 100644 index ebbad13..0000000 --- a/feed.xml +++ /dev/null @@ -1,13 +0,0 @@ - - tjp.lol - Notes, code, and longer thoughts from an elder-millennial software engineer in Salt Lake City. - - - 2026-07-11T00:00:00Z - https://tjp.lol/ - - tjp - t@tjp.lol - - - diff --git a/index.html b/index.html deleted file mode 100644 index fe7b5ee..0000000 --- a/index.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - -tjp.lol - - - - - -
- -
-

~tjp $_

-

Elder-millennial software engineer in Salt Lake City, Utah. Writing about code, tools, and the small web.

- -
- -
-
-

Welcome in. This site is my writing desk: weblog posts moving over from my gemini:// capsule, plus a public cut of the notes I keep in Obsidian and sync across my machines with Syncthing.

-

Plain HTML and CSS. No JavaScript, no tracking — it reads exactly the same with scripts turned off. That's the point.

-
- -
-

recent posts

-

all posts →

-
- -
-
-

elsewhere

- -
- -
-
- - - -
- - - diff --git a/notes/index.html b/notes/index.html deleted file mode 100644 index ea988cf..0000000 --- a/notes/index.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - -Notes — tjp.lol - - - - -
- -
-

~tjp $_

- -
- -
-
-

This is a digital garden — a public slice of the notes I keep in Obsidian. Unlike the weblog, these aren't essays. They're living pages: some are a paragraph, some are years old, most link to each other. Start anywhere and follow the threads.

-
- -
-

start here

-
- -
-

all notes

- -
-
- - - -
- - - diff --git a/projects/index.html b/projects/index.html deleted file mode 100644 index 6bc0dc5..0000000 --- a/projects/index.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - -Projects — tjp.lol - - - - -
- -
-

~tjp $_

- -
- -
-
-

Small things I've built and still maintain. Most live on GitHub.

-
- -
-

maintained

-
- -
-

archived / for fun

-
-
- - - -
- - - diff --git a/weblog/index.html b/weblog/index.html deleted file mode 100644 index f67da6b..0000000 --- a/weblog/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - -Weblog — tjp.lol - - - - - -
- -
-

~tjp $_

- -
- -
-
-

Longer-form writing. Most of these are migrating over from my Gemini capsule, so dates reflect the original posting. Subscribe via RSS.

-
- - -
- - - -
- - - -- cgit v1.3