Skip to content

chore(spec): record Task 7 host convergence as verified - #108

Merged
inkatze merged 1 commit into
mainfrom
chore/dev-services-task-7
Aug 7, 2026
Merged

chore(spec): record Task 7 host convergence as verified#108
inkatze merged 1 commit into
mainfrom
chore/dev-services-task-7

Conversation

@inkatze

@inkatze inkatze commented Aug 7, 2026

Copy link
Copy Markdown
Owner

Records the bundle's one manual unit. Task 7 is a run-and-observe loop on hardware that produces no repo artifact a worker can generate, so this is an empty commit whose message is the record and whose Planwright-Task: dev-services/7 trailer is what the derivation reads.

All four Done-when clauses verified on the physical host. Two are worth calling out because the obvious check would have passed while proving nothing:

Reboot survival. dev-services-runtime-test.sh passes 6/6 after a genuine reboot. The units' ActiveEnterTimestamp reads 2026-04-15 11:33, this host's pre-NTP RTC value, which places their start inside early boot rather than a later manual systemctl start. The previous check looked identical and was not: the services had been installed six minutes after that boot, so "active and enabled" said nothing about surviving one.

Interrupted-run convergence. Reached by accident rather than by design, which makes it a fairer test than a staged one. Verified after the fact: dpkg --audit reports nothing, so no package was left half-configured, and both harnesses pass, including postgresql-access-test.sh creating, migrating and dropping a scratch database and asserting 5432 is loopback-only.

~/.my.cnf is absent and stayed absent across the reboot. It was not absent when the clause was first checked, so this one changed state during the work.

Not closing the bundle

Task 1's mechanism shipped in #98, but REQ-D1.2 and REQ-D1.3 remain unmet: the generated private-project-identifier block does not exist in .gitleaks.toml at all, so that guard has never been active. It needs the machine-local identifier file, which cannot be supplied from a PR.

Status: therefore stays as it is, and Task 1's Awaiting-input entry stays with it. Flipping to Done with two REQs unsatisfied would be the same inaccurate tracked claim this bundle's Task 5 existed to remove.

Task 7 is the bundle's one manual unit -- a run-and-observe loop on
hardware that produces no repo artifact a worker can generate -- so this
empty commit is the artifact: it carries the trailer the derivation
reads, and the evidence below is the record.

All four Done-when clauses, verified on the physical Linux host:

  Two consecutive runs converge
    Confirmed by the operator: the second run reported zero changed
    tasks and zero failures.

  Both services running and reachable after a reboot
    scripts/dev-services-runtime-test.sh passes 6/6 after a genuine
    reboot: PostgreSQL and Valkey each active, enabled, and accepting a
    connection on their declared 127.0.0.1 ports. The units'
    ActiveEnterTimestamp reads 2026-04-15 11:33 -- this host's pre-NTP
    RTC value -- which places their start inside early boot rather than
    a later manual `systemctl start`. Worth stating because the previous
    check looked identical and was not: the services had been installed
    six minutes AFTER that boot, so "active and enabled" proved nothing
    about surviving one.

  An interrupted run is followed by one that converges, no manual cleanup
    Reached by accident rather than by design, which makes it a fair
    test. Verified after the fact: `dpkg --audit` reports nothing, so no
    package was left half-configured, and both harnesses pass --
    including postgresql-access-test.sh creating, migrating and dropping
    a scratch database and asserting port 5432 is loopback-only.

  The role's macOS-only content absent, ~/.my.cnf specifically
    Absent, and absent across a reboot. It was NOT absent when this
    clause was first checked: a symlink dated Jul 24 predated the
    platform split, and the Darwin guard stops the file being recreated
    without removing one already there. Removed by hand on the host, by
    explicit operator choice over declaring it absent in the role -- so
    another host carrying the same leftover would still fail this clause
    with no guard to catch it.

Not closing the bundle. Task 1's mechanism shipped in #98, but
REQ-D1.2 and REQ-D1.3 stay unmet until the machine-local identifier file
exists and the generated block lands in .gitleaks.toml, which is empty
today. Status therefore stays as it is, and the Awaiting-input entry for
Task 1 stays with it.

Planwright-Task: dev-services/7

Claude-Session: https://claude.ai/code/session_01F8oKrXASMQSXMVjSvuJpn9
@inkatze
inkatze merged commit 02f5a06 into main Aug 7, 2026
9 of 12 checks passed
@inkatze
inkatze deleted the chore/dev-services-task-7 branch August 7, 2026 21:56
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