Everything's an experiment.

Notes on work, tech, and life.

Recent updates:

GitHubpr merged

Spec: Gitea: timeline and combined-status pages as 28.2.0 returns them (null terminal pages, per-page totals, status field)

Merged PR in mattpolicastro/nightshift: "Spec: Gitea: timeline and combined-status pages as 28.2.0 returns them (null terminal pages, per-page totals, status field)"

View pull request
GitHubpr merged

Spec: Gitea: read label actions and unpaginated comment listings the way 28.2.0 returns them

Merged PR in mattpolicastro/nightshift: "Spec: Gitea: read label actions and unpaginated comment listings the way 28.2.0 returns them"

View pull request
GitHubpr merged

Spec: Land: accept schedule and bare workflow_dispatch triggers in the CI exclusion parser (main CI red since #159)

Merged PR in mattpolicastro/nightshift: "Spec: Land: accept schedule and bare workflow_dispatch triggers in the CI exclusion parser (main CI red since #159)"

View pull request
GitHubpr merged

Spec: Status JSON: forge-neutral run link

Merged PR in mattpolicastro/nightshift: "Spec: Status JSON: forge-neutral run link"

View pull request
GitHubpr merged

Spec: Forge: nightshift arm on Gitea

Merged PR in mattpolicastro/nightshift: "Spec: Forge: nightshift arm on Gitea"

View pull request
GitHubpr merged

plugin: drop the Paseo upper bound and add an SDK canary

Merged PR in mattpolicastro/nightshift: "plugin: drop the Paseo upper bound and add an SDK canary"

View pull request
GitHubpr merged

forge: Gitea issue-label reads are a single unpaginated GET

Merged PR in mattpolicastro/nightshift: "forge: Gitea issue-label reads are a single unpaginated GET"

View pull request
GitHubpr merged

Spec: land: merge Markdown-only PRs that CI never runs on

Merged PR in mattpolicastro/nightshift: "Spec: land: merge Markdown-only PRs that CI never runs on"

View pull request
GitHubpush

specloop: archive mattpolicastro__nightshift-issue-136-land-merge-markdown-only-prs-that-ci-nev into openspec/specs

Pushed 107 commits to mattpolicastro/nightshift • specloop: complete task 1.2 • specloop: task 1.2 Integrate proof, grace, registered-check precedence and the separate CI attestation in `nightshift/land.py`, with new `tests/test_land_docs_only.py` and the scoped `docs/landing.md` • specloop: complete task 1.1 • specloop: task 1.1 Add conservative exclusion evidence in `nightshift/land.py` and new `tests/test_land_ci_exclusion.py` (one session, approximately 300 changed code/test lines). Add the two named lan • Merge current PR base 89c6898a5a1cb8bb48ad2494a07ce01ff7b9ce68 • specloop: complete task 1.6 • specloop: task 1.6 Update `docs/landing.md` for Gitea setup, land.env precedence/isolation, trusted publication/attestation authors, separate #129 finish provisioning, exact-head CI, update and merge • specloop: complete task 1.5 • specloop: task 1.5 Complete exact-head Gitea CI and pinned merge/confirmation operations in `nightshift/land.py`, reusing checks_for_sha with the #122 mapping and local link-field normalization while • specloop: complete task 1.4 • specloop: task 1.4 Implement Gitea initial ancestry and single-attempt merge-style branch update in `nightshift/land.py`, retaining the shared deadline and exact ordered-parent acceptance check. Add b • specloop: complete task 1.3 • specloop: task 1.3 Implement Gitea landing evidence and lifecycle integration in `nightshift/land.py`: complete comment reads, trusted_logins decisions from user.login, authenticated non-bot attester • specloop: complete task 1.2 • specloop: task 1.2 Add Gitea URL/config/enrollment resolution and invocation-local human credential loading to `nightshift/land.py`, with injected confined HTTP transport and validated PR/main facts. • Merge pull request #148 from mattpolicastro/plugin/open-external-links • specloop: complete task 1.1 • specloop: task 1.1 Establish the named landing operation boundary in `nightshift/land.py` while retaining existing runner/helper compatibility and exact GitHub argv/order. Move Factory's remote-head c • plugin: open forge links in the system browser • specloop: complete task 2.1 • specloop: task 2.1 Address review feedback 1: "**mattpolicastro:**\n\n**Human check (real Gitea arming) failed: one-line bug.** Check mode on a real Gitea checkout reports `Issue #N lookup failed` for • specloop: append review round 1 • Merge current PR base 89c6898a5a1cb8bb48ad2494a07ce01ff7b9ce68 • specloop: complete task 1.3 • specloop: task 1.3 Complete main's --config dispatch and verified Gitea label/error-confirmation path in `nightshift/arm.py`; extend new `tests/test_arm_forge.py` with `test_arm_gitea_label_write_read • specloop: complete task 1.2 • Merge pull request #148 from mattpolicastro/plugin/open-external-links • specloop: task 1.2 Implement selected-forge armed-issue and PR context in `nightshift/arm.py`; add new `tests/test_arm_gitea_context.py`, including `test_arm_gitea_lists_armed_issues_client_side`. Reu • specloop: complete task 1.1 • specloop: task 1.1 Introduce the arming forge boundary and configured issue reads in `nightshift/arm.py`; add tests in new `tests/test_arm_forge.py`. Preserve public runner-based helpers and the uncha • plugin: open forge links in the system browser • Merge current PR base 89c6898a5a1cb8bb48ad2494a07ce01ff7b9ce68 • Merge pull request #148 from mattpolicastro/plugin/open-external-links • specloop: complete task 1.1 • specloop: task 1.1 After #129 and #138 are landed, implement the configuration-only link helper and additive non-GitHub `context.link` in `specloop/cli.py::_status_context` following the design, prese • plugin: open forge links in the system browser • Merge pull request #148 from mattpolicastro/plugin/open-external-links • plugin: open forge links in the system browser • Merge pull request #154 from mattpolicastro/spec/mattpolicastro__nightshift-issue-129-forge-specloop-publish-finish-and-critic • specloop: archive mattpolicastro__nightshift-issue-129-forge-specloop-publish-finish-and-critic into openspec/specs • specloop: complete task 1.6 • specloop: task 1.6 Align operator-facing confirmation and guidance with the shared engine. Change only Publish/Finish warning text in `plugins/nightshift/client/factory-model.ts:decideFactoryAction` t • specloop: complete task 1.5 • specloop: task 1.5 Wire `open_pr_files` to the manifest selector and Gitea reader in `specloop/critic.py`; preserve the GitHub backend's argv, limits and runner injection. Construct GiteaForge with a • specloop: complete task 1.4 • specloop: task 1.4 Add the private Gitea context reader in `specloop/critic.py`, taking a constructed forge, repository and branch. Use confined page requests, PR-number/file-name identities, backend- • specloop: complete task 1.3 • specloop: task 1.3 Implement Gitea title readiness in `specloop/cli.py:_finish` with GET, one prefix-removing PATCH and exact GET verification, including ambiguous-write read-back and unprefixed retry • specloop: complete task 1.2 • specloop: task 1.2 Implement safe Gitea publication in `specloop/cli.py:_existing_pr/_publish`: inspect the fresh base..head NUL-delimited no-renames diff before effects on both forges, preserve push/ • specloop: complete task 1.1 • specloop: task 1.1 Add manifest forge selection and full Gitea origin validation in `specloop/cli.py`, using existing config parsing and GiteaForge construction. Preserve GitHub routing before config • Draft OpenSpec change mattpolicastro__nightshift-issue-129-forge-specloop-publish-finish-and-critic (specloop propose, round 2) • Draft OpenSpec change mattpolicastro__nightshift-issue-129-forge-specloop-publish-finish-and-critic (specloop propose, round 1) • specloop: archive mattpolicastro__nightshift-issue-129-forge-specloop-publish-finish-and-critic into openspec/specs • specloop: complete task 1.6 • specloop: task 1.6 Align operator-facing confirmation and guidance with the shared engine. Change only Publish/Finish warning text in `plugins/nightshift/client/factory-model.ts:decideFactoryAction` t • specloop: complete task 1.5 • specloop: task 1.5 Wire `open_pr_files` to the manifest selector and Gitea reader in `specloop/critic.py`; preserve the GitHub backend's argv, limits and runner injection. Construct GiteaForge with a • specloop: complete task 1.4 • specloop: task 1.4 Add the private Gitea context reader in `specloop/critic.py`, taking a constructed forge, repository and branch. Use confined page requests, PR-number/file-name identities, backend- • specloop: complete task 1.3 • specloop: task 1.3 Implement Gitea title readiness in `specloop/cli.py:_finish` with GET, one prefix-removing PATCH and exact GET verification, including ambiguous-write read-back and unprefixed retry • specloop: complete task 1.2 • specloop: task 1.2 Implement safe Gitea publication in `specloop/cli.py:_existing_pr/_publish`: inspect the fresh base..head NUL-delimited no-renames diff before effects on both forges, preserve push/ • specloop: complete task 1.1 • specloop: task 1.1 Add manifest forge selection and full Gitea origin validation in `specloop/cli.py`, using existing config parsing and GiteaForge construction. Preserve GitHub routing before config • Draft OpenSpec change mattpolicastro__nightshift-issue-151-verify-per-step-loopback-for-flutter-tes (specloop propose, round 2) • Merge pull request #152 from mattpolicastro/spec/mattpolicastro__nightshift-issue-135-manifest-per-step-env-table • specloop: archive mattpolicastro__nightshift-issue-135-manifest-per-step-env-table into openspec/specs • specloop: complete task 1.2 • specloop: task 1.2 After 1.1, update the preparation and mutation-step field guidance in `docs/specloop/README.md`, add the env explanation and four-kind TOML fragment, and add new `tests/test_step_en • specloop: complete task 1.1 • specloop: task 1.1 Implement the shared env schema, validation, placeholder handling and fresh per-command merge in `specloop/manifest.py` and `specloop/verify.py` as specified in the design; add focu • Draft OpenSpec change mattpolicastro__nightshift-issue-135-manifest-per-step-env-table (specloop propose, round 1) • specloop: archive mattpolicastro__nightshift-issue-135-manifest-per-step-env-table into openspec/specs • specloop: complete task 1.2 • specloop: task 1.2 After 1.1, update the preparation and mutation-step field guidance in `docs/specloop/README.md`, add the env explanation and four-kind TOML fragment, and add new `tests/test_step_en • specloop: complete task 1.1 • specloop: task 1.1 Implement the shared env schema, validation, placeholder handling and fresh per-command merge in `specloop/manifest.py` and `specloop/verify.py` as specified in the design; add focu • Merge pull request #149 from mattpolicastro/spec/mattpolicastro__nightshift-issue-128-forge-forges-config-forge-selection-seal • specloop: archive mattpolicastro__nightshift-issue-128-forge-forges-config-forge-selection-seal into openspec/specs • specloop: complete task 1.5 • specloop: task 1.5 Complete clone credential verification in `nightshift/preflight.py` with bounded noninteractive injected git subprocesses, strict matching origin and bot username, duplicate/malform • specloop: complete task 1.4 • specloop: task 1.4 Add read-only remote Gitea preflight controls in `nightshift/preflight.py` using injectable existing transports: per-forge bot/non-admin and forbidden-probe checks, per-repository c • specloop: complete task 1.3 • specloop: task 1.3 Extend `specloop/seal.py:credential_values` using the pure forge-table parser and trusted explicit/default config selection, scanning every declared bot/landing value from all avail • specloop: complete task 1.2 • specloop: task 1.2 Add daemon `forge_for` and landing-environment exclusion, then gate every Gitea row in startup and polling before readiness/recovery/stages with the mandatory dispatch hold. Leave ` • specloop: complete task 1.1 • specloop: task 1.1 Add typed forge tables, exact references, implicit GitHub defaults and casefolded enrollment collision validation in `nightshift/config.py`; retain ignored unknown keys and engine/m • Draft OpenSpec change mattpolicastro__nightshift-issue-128-forge-forges-config-forge-selection-seal (specloop propose, round 3) • Draft OpenSpec change mattpolicastro__nightshift-issue-128-forge-forges-config-forge-selection-seal (specloop propose, round 2) • Draft OpenSpec change mattpolicastro__nightshift-issue-128-forge-forges-config-forge-selection-seal (specloop propose, round 1) • specloop: archive mattpolicastro__nightshift-issue-128-forge-forges-config-forge-selection-seal into openspec/specs • specloop: complete task 1.5 • specloop: task 1.5 Complete clone credential verification in `nightshift/preflight.py` with bounded noninteractive injected git subprocesses, strict matching origin and bot username, duplicate/malform • specloop: complete task 1.4 • specloop: task 1.4 Add read-only remote Gitea preflight controls in `nightshift/preflight.py` using injectable existing transports: per-forge bot/non-admin and forbidden-probe checks, per-repository c • specloop: complete task 1.3 • specloop: task 1.3 Extend `specloop/seal.py:credential_values` using the pure forge-table parser and trusted explicit/default config selection, scanning every declared bot/landing value from all avail • specloop: complete task 1.2 • specloop: task 1.2 Add daemon `forge_for` and landing-environment exclusion, then gate every Gitea row in startup and polling before readiness/recovery/stages with the mandatory dispatch hold. Leave ` • specloop: complete task 1.1 • specloop: task 1.1 Add typed forge tables, exact references, implicit GitHub defaults and casefolded enrollment collision validation in `nightshift/config.py`; retain ignored unknown keys and engine/m

View commits
GitHubpr merged

Spec: Forge: land on Gitea with the human token

Merged PR in mattpolicastro/nightshift: "Spec: Forge: land on Gitea with the human token"

View pull request
Browse the archive