Everything's an experiment.

Notes on work, tech, and life.

Recent updates:

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
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
GitHubpr merged

plugin: open forge links in the system browser

Merged PR in mattpolicastro/nightshift: "plugin: open forge links in the system browser"

View pull request
GitHubpr merged

Spec: Forge: specloop publish, finish and critic on the forge

Merged PR in mattpolicastro/nightshift: "Spec: Forge: specloop publish, finish and critic on the forge"

View pull request
GitHubpr merged

Spec: Manifest: per-step env table

Merged PR in mattpolicastro/nightshift: "Spec: Manifest: per-step env table"

View pull request
GitHubpush

Merge pull request #149 from mattpolicastro/spec/mattpolicastro__nightshift-issue-128-forge-forges-config-forge-selection-seal

Pushed 26 commits to mattpolicastro/nightshift • 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: [[forges]] config, forge selection, seal and preflight per forge

Merged PR in mattpolicastro/nightshift: "Spec: Forge: [[forges]] config, forge selection, seal and preflight per forge"

View pull request
Bluesky · Quote

Had a Table Saw Oops where I pushed my index and middle fingertips right across the blade, and apparently missed major bone damage by a hair’s breadth My response was to stumble into the house while trying to apply pressure shouting, “DOCTOR! DOCTOR!” until I got a response

Nick (derogatory) ✨ (@slothropsmap.bsky.social)

I appear to have created a permission structure for posting your most horrible accidents. Whatever, go crazy. Let’s hear it. In what obscene ways have you maimed and impaled yourselves?

View on Bluesky
GitHubpush

Merge pull request #147 from mattpolicastro/spec/mattpolicastro__nightshift-issue-138-publication-carry-design-level-human-che

Pushed 275 commits to mattpolicastro/nightshift • specloop: archive mattpolicastro__nightshift-issue-138-publication-carry-design-level-human-che into openspec/specs • Merge current PR base 0621c92fe95145f00e3721d5e5b19eab2f014d9b • specloop: complete task 1.2 • specloop: task 1.2 Add `test_design_human_checks_reach_publication` and recovery/readiness cases in new `tests/test_specloop_design_publication.py`, using temporary committed Git trees, real readiness • specloop: complete task 1.1 • specloop: task 1.1 Add committed-design collection in `specloop/loop.py` and use it from `finals` and `specloop/cli.py:_pr_body`, with local regression tests in new `tests/test_specloop_design_checks. • Draft OpenSpec change mattpolicastro__nightshift-issue-138-publication-carry-design-level-human-che (specloop propose, round 2) • Merge current PR base 0621c92fe95145f00e3721d5e5b19eab2f014d9b • specloop: complete task 1.2 • specloop: task 1.2 Add `test_design_human_checks_reach_publication` and recovery/readiness cases in new `tests/test_specloop_design_publication.py`, using temporary committed Git trees, real readiness • specloop: complete task 1.1 • specloop: task 1.1 Add committed-design collection in `specloop/loop.py` and use it from `finals` and `specloop/cli.py:_pr_body`, with local regression tests in new `tests/test_specloop_design_checks. • Merge pull request #144 from mattpolicastro/spec/mattpolicastro__nightshift-issue-127-forge-giteaforge-for-front-door-operatio • specloop: archive mattpolicastro__nightshift-issue-127-forge-giteaforge-for-front-door-operatio into openspec/specs • Merge current PR base 699b0ef20147ba853edfc5c5cf8f259614ba7cd1 • Merge current PR base d1e1b904288a9c0ae1d7ede569ac4bb0cb1d2425 • specloop: complete task 1.7 • specloop: task 1.7 Create `tests/contract/conftest.py` and `tests/contract/test_gitea_contract.py` to reuse compact normal-operation contracts offline and in explicitly selected live mode. Complete th • specloop: complete task 1.6 • specloop: task 1.6 Implement bot-owned updates/marked creates using the comment reads from 1.3 and ambiguous-create reconciliation, with fake comment routes/failures and `test_gitea_comment_create_rec • specloop: complete task 1.5 • specloop: task 1.5 Implement `checks_for_sha`, the `pr_checks` compatibility method and commit-parent normalization in `gitea.py`, with fake combined-status/commit routes and table-driven tests. Add ` • specloop: complete task 1.4 • specloop: task 1.4 Implement all-state exact-branch PR lookup, shared PR view normalization, safe target resolution and title-prefix draft creation in `gitea.py`, with corresponding fake routes/tests. • specloop: complete task 1.3 • specloop: task 1.3 Implement allowlist-only identity projection, timeline label events, issue/drafting/repository/blocker reads, complete comment/feedback reads and explicit unsupported membership met • specloop: complete task 1.2 • specloop: task 1.2 Implement label map refresh, issue/open-PR local filtering, issue-label reads and targeted issue/PR relabeling with read-back after every successful write; extend fake label/issue r • specloop: complete task 1.1 • specloop: task 1.1 Create the guarded adapter/fake foundation in `nightshift/forge/gitea.py`, `tests/fake_gitea.py` and `tests/test_forge_gitea.py`: constructor validation and copied allowlist, transp • Draft OpenSpec change mattpolicastro__nightshift-issue-127-forge-giteaforge-for-front-door-operatio (specloop propose, round 2) • Draft OpenSpec change mattpolicastro__nightshift-issue-127-forge-giteaforge-for-front-door-operatio (specloop propose, round 1) • Merge pull request #144 from mattpolicastro/spec/mattpolicastro__nightshift-issue-127-forge-giteaforge-for-front-door-operatio • specloop: archive mattpolicastro__nightshift-issue-127-forge-giteaforge-for-front-door-operatio into openspec/specs • Merge current PR base 699b0ef20147ba853edfc5c5cf8f259614ba7cd1 • Merge current PR base d1e1b904288a9c0ae1d7ede569ac4bb0cb1d2425 • specloop: complete task 1.7 • specloop: task 1.7 Create `tests/contract/conftest.py` and `tests/contract/test_gitea_contract.py` to reuse compact normal-operation contracts offline and in explicitly selected live mode. Complete th • specloop: complete task 1.6 • specloop: task 1.6 Implement bot-owned updates/marked creates using the comment reads from 1.3 and ambiguous-create reconciliation, with fake comment routes/failures and `test_gitea_comment_create_rec • specloop: complete task 1.5 • specloop: task 1.5 Implement `checks_for_sha`, the `pr_checks` compatibility method and commit-parent normalization in `gitea.py`, with fake combined-status/commit routes and table-driven tests. Add ` • specloop: complete task 1.4 • specloop: task 1.4 Implement all-state exact-branch PR lookup, shared PR view normalization, safe target resolution and title-prefix draft creation in `gitea.py`, with corresponding fake routes/tests. • specloop: complete task 1.3 • specloop: task 1.3 Implement allowlist-only identity projection, timeline label events, issue/drafting/repository/blocker reads, complete comment/feedback reads and explicit unsupported membership met • specloop: complete task 1.2 • specloop: task 1.2 Implement label map refresh, issue/open-PR local filtering, issue-label reads and targeted issue/PR relabeling with read-back after every successful write; extend fake label/issue r • specloop: complete task 1.1 • specloop: task 1.1 Create the guarded adapter/fake foundation in `nightshift/forge/gitea.py`, `tests/fake_gitea.py` and `tests/test_forge_gitea.py`: constructor validation and copied allowlist, transp • Draft OpenSpec change mattpolicastro__nightshift-issue-127-forge-giteaforge-for-front-door-operatio (specloop propose, round 2) • Draft OpenSpec change mattpolicastro__nightshift-issue-127-forge-giteaforge-for-front-door-operatio (specloop propose, round 1) • specloop: archive mattpolicastro__nightshift-issue-127-forge-giteaforge-for-front-door-operatio into openspec/specs • Merge branch 'main' into spec/mattpolicastro__nightshift-issue-132-factory-page-accept-pr-links-on-configur • Merge pull request #142 from mattpolicastro/spec/mattpolicastro__nightshift-issue-134-verify-trusted-dependency-snapshots-keye • specloop: archive mattpolicastro__nightshift-issue-134-verify-trusted-dependency-snapshots-keye into openspec/specs • Merge current PR base cecca8a9e11b986def1c4e312c7a43ac9541433e • specloop: complete task 1.6 • specloop: task 1.6 Complete snapshot lifecycle retention/recovery in `specloop/verify.py` with cross-ID, cross-run and interrupted-prune tests; document the finished opt-in contract in `docs/specloop/ • specloop: complete task 1.5 • specloop: task 1.5 Thread snapshot context through `specloop/evidence.py` and its `loop.py` caller without changing mutation receipts or timeboxes. Add focused evidence fixtures covering distinct sequ • specloop: complete task 1.4 • specloop: task 1.4 Wire initial snapshot-only base sync, final base-sync warming and verification context propagation in `specloop/loop.py` under the existing run lock, with serialized forwarding to r • specloop: complete task 1.3 • specloop: task 1.3 Add clonefile-backed consumption and optional context keywords to `run_steps()`/`run_extracted()` in `specloop/verify.py`, path expansion before preparation, final store write denia • specloop: complete task 1.2 • specloop: task 1.2 Implement the trusted-base warm executor and immutable atomic payload publication in `specloop/verify.py`, reusing the command runner without changing ordinary receipts. Add `Snapsh • specloop: complete task 1.1 • specloop: task 1.1 Add `Snapshot` and optional `Manifest.snapshots` parsing/validation in `specloop/manifest.py`, plus the framed raw-byte `snapshot_key` helper in `specloop/verify.py`. Add focused ma • Draft OpenSpec change mattpolicastro__nightshift-issue-134-verify-trusted-dependency-snapshots-keye (specloop propose, round 1) • specloop: archive mattpolicastro__nightshift-issue-132-factory-page-accept-pr-links-on-configur into openspec/specs • Merge pull request #142 from mattpolicastro/spec/mattpolicastro__nightshift-issue-134-verify-trusted-dependency-snapshots-keye • specloop: archive mattpolicastro__nightshift-issue-134-verify-trusted-dependency-snapshots-keye into openspec/specs • Merge current PR base cecca8a9e11b986def1c4e312c7a43ac9541433e • specloop: complete task 1.6 • specloop: task 1.6 Complete snapshot lifecycle retention/recovery in `specloop/verify.py` with cross-ID, cross-run and interrupted-prune tests; document the finished opt-in contract in `docs/specloop/ • specloop: complete task 1.5 • specloop: task 1.5 Thread snapshot context through `specloop/evidence.py` and its `loop.py` caller without changing mutation receipts or timeboxes. Add focused evidence fixtures covering distinct sequ • specloop: complete task 1.4 • specloop: task 1.4 Wire initial snapshot-only base sync, final base-sync warming and verification context propagation in `specloop/loop.py` under the existing run lock, with serialized forwarding to r • specloop: complete task 1.3 • specloop: task 1.3 Add clonefile-backed consumption and optional context keywords to `run_steps()`/`run_extracted()` in `specloop/verify.py`, path expansion before preparation, final store write denia • specloop: complete task 1.2 • specloop: task 1.2 Implement the trusted-base warm executor and immutable atomic payload publication in `specloop/verify.py`, reusing the command runner without changing ordinary receipts. Add `Snapsh • specloop: complete task 1.1 • specloop: task 1.1 Add `Snapshot` and optional `Manifest.snapshots` parsing/validation in `specloop/manifest.py`, plus the framed raw-byte `snapshot_key` helper in `specloop/verify.py`. Add focused ma • Draft OpenSpec change mattpolicastro__nightshift-issue-134-verify-trusted-dependency-snapshots-keye (specloop propose, round 1) • specloop: archive mattpolicastro__nightshift-issue-134-verify-trusted-dependency-snapshots-keye into openspec/specs • Merge pull request #143 from mattpolicastro/spec/mattpolicastro__nightshift-issue-137-revision-rounds-a-re-run-round-must-post • specloop: archive mattpolicastro__nightshift-issue-137-revision-rounds-a-re-run-round-must-post into openspec/specs • specloop: complete task 1.3 • specloop: task 1.3 Add the concise revision rerun limitation and remove/clear/re-add workaround to `KNOWN-LIMITATIONS.md`, preserving existing limitations and citing #137. Explain unchanged rejection • specloop: complete task 1.2 • specloop: task 1.2 Add compatibility and interruption regressions in new `tests/test_revision_result_markers.py`, reusing existing recovery and transport fakes. Include `test_old_round_markers_still_r • specloop: complete task 1.1 • specloop: task 1.1 Implement durable same-round result identities and delivery in `nightshift/specloop_intake.py`: validate optional `delivery_attempt`, refresh it only when `_save_revision_snapshot` • Draft OpenSpec change mattpolicastro__nightshift-issue-137-revision-rounds-a-re-run-round-must-post (specloop propose, round 2) • Draft OpenSpec change mattpolicastro__nightshift-issue-137-revision-rounds-a-re-run-round-must-post (specloop propose, round 1) • specloop: archive mattpolicastro__nightshift-issue-137-revision-rounds-a-re-run-round-must-post into openspec/specs • specloop: complete task 1.3 • specloop: task 1.3 Add the concise revision rerun limitation and remove/clear/re-add workaround to `KNOWN-LIMITATIONS.md`, preserving existing limitations and citing #137. Explain unchanged rejection • specloop: complete task 1.2 • specloop: task 1.2 Add compatibility and interruption regressions in new `tests/test_revision_result_markers.py`, reusing existing recovery and transport fakes. Include `test_old_round_markers_still_r • specloop: complete task 1.1 • specloop: task 1.1 Implement durable same-round result identities and delivery in `nightshift/specloop_intake.py`: validate optional `delivery_attempt`, refresh it only when `_save_revision_snapshot` • Merge pull request #140 from mattpolicastro/spec/mattpolicastro__nightshift-issue-126-forge-seam-forge-protocol-githubforge-by • Merge branch 'main' into spec/mattpolicastro__nightshift-issue-126-forge-seam-forge-protocol-githubforge-by • specloop: archive mattpolicastro__nightshift-issue-126-forge-seam-forge-protocol-githubforge-by into openspec/specs • Merge current PR base 6d2d238e610583e6fa7678e5f985624357ec9fff • specloop: complete task 2.5 • specloop: task 2.5 Complete guarded daemon integration in `nightshift/daemon.py`, using `GitHubForge(gh)` for engine-switch recovery and retaining the guarded runner passed to intake and error reporti • specloop: complete task 2.4 • specloop: task 2.4 Migrate `publish_pending`, `_reconcile_merge_readiness`, `_readiness_ci` and `_deliver_readiness` in `nightshift/specloop_intake.py` to late-created forge operations. Keep CI JSON p • specloop: complete task 2.3 • specloop: task 2.3 Migrate `admit_pending`, `revise_pending`, `_initialize_revision_feedback` and `_approval_covers_head` in `nightshift/specloop_intake.py`, removing the frozen helper runner default • specloop: complete task 2.2 • specloop: task 2.2 Migrate `propose_pending` and `_deliver` in `nightshift/specloop_intake.py` to late-created forge operations for listing, issue/PR reads, blockers, PR creation and labels, passing t • specloop: complete task 2.1 • specloop: task 2.1 Migrate the authorization and comment I/O helpers in `nightshift/specloop_intake.py`: issue-author lookup, label-event reads, membership requests, `_comment_label_rejection`, `_comm • specloop: complete task 1.2 • specloop: task 1.2 Complete the direct operations in `nightshift/forge/github.py` using the design's fixed argv inventory, semantic inputs and narrow raw-response exceptions. Extend `tests/test_forge_ • specloop: complete task 1.1 • specloop: task 1.1 Add `Forge`, `ForgeError` and frozen factual records in `nightshift/forge/__init__.py` and new `nightshift/forge/types.py`; retain the package docstring and avoid runtime import cyc • Draft OpenSpec change mattpolicastro__nightshift-issue-126-forge-seam-forge-protocol-githubforge-by (specloop propose, round 4) • Draft OpenSpec change mattpolicastro__nightshift-issue-126-forge-seam-forge-protocol-githubforge-by (specloop propose, round 2) • Merge branch 'main' into spec/mattpolicastro__nightshift-issue-126-forge-seam-forge-protocol-githubforge-by • Merge pull request #139 from mattpolicastro/spec/mattpolicastro__nightshift-issue-133-evidence-mutation-testing-for-compiled-l • Merge branch 'main' into spec/mattpolicastro__nightshift-issue-133-evidence-mutation-testing-for-compiled-l • specloop: archive mattpolicastro__nightshift-issue-133-evidence-mutation-testing-for-compiled-l into openspec/specs • Merge current PR base 9c4c7258876169360707ba5327604651ad0f5166 • specloop: complete task 1.3 • specloop: task 1.3 Document and validate the Dart example. Update only the evidence section of `docs/specloop/README.md`, add `examples/specloop/dart.toml` and structural tests for real-parser step re • specloop: complete task 1.2 • specloop: task 1.2 Add C-family generation and preserve legacy behavior. In `specloop/evidence.py`, add the extension table, token guards and physical-line quote/comment rules, retain existing complet • specloop: complete task 1.1 • specloop: task 1.1 Add configurable invalid classification. In `specloop/manifest.py` and `specloop/evidence.py`, add the shared default, typed manifest field, validation/round-trip support and worker • Draft OpenSpec change mattpolicastro__nightshift-issue-133-evidence-mutation-testing-for-compiled-l (specloop propose, round 1) • Merge pull request #139 from mattpolicastro/spec/mattpolicastro__nightshift-issue-133-evidence-mutation-testing-for-compiled-l • Merge branch 'main' into spec/mattpolicastro__nightshift-issue-133-evidence-mutation-testing-for-compiled-l • specloop: archive mattpolicastro__nightshift-issue-133-evidence-mutation-testing-for-compiled-l into openspec/specs • Merge current PR base 9c4c7258876169360707ba5327604651ad0f5166 • specloop: complete task 1.3 • specloop: task 1.3 Document and validate the Dart example. Update only the evidence section of `docs/specloop/README.md`, add `examples/specloop/dart.toml` and structural tests for real-parser step re • specloop: complete task 1.2 • specloop: task 1.2 Add C-family generation and preserve legacy behavior. In `specloop/evidence.py`, add the extension table, token guards and physical-line quote/comment rules, retain existing complet • specloop: complete task 1.1 • specloop: task 1.1 Add configurable invalid classification. In `specloop/manifest.py` and `specloop/evidence.py`, add the shared default, typed manifest field, validation/round-trip support and worker • Draft OpenSpec change mattpolicastro__nightshift-issue-133-evidence-mutation-testing-for-compiled-l (specloop propose, round 1) • specloop: archive mattpolicastro__nightshift-issue-126-forge-seam-forge-protocol-githubforge-by into openspec/specs • Merge current PR base 6d2d238e610583e6fa7678e5f985624357ec9fff • Merge pull request #141 from mattpolicastro/fix/land-skip-foreign-forge-rows • tests: treat EPERM as gone in the factory-land absent() helper • specloop: complete task 2.5 • specloop: task 2.5 Complete guarded daemon integration in `nightshift/daemon.py`, using `GitHubForge(gh)` for engine-switch recovery and retaining the guarded runner passed to intake and error reporti • fix(land): ignore unrelated forge hosts during run discovery • specloop: complete task 2.4 • specloop: task 2.4 Migrate `publish_pending`, `_reconcile_merge_readiness`, `_readiness_ci` and `_deliver_readiness` in `nightshift/specloop_intake.py` to late-created forge operations. Keep CI JSON p • specloop: complete task 2.3 • specloop: task 2.3 Migrate `admit_pending`, `revise_pending`, `_initialize_revision_feedback` and `_approval_covers_head` in `nightshift/specloop_intake.py`, removing the frozen helper runner default • specloop: complete task 2.2 • specloop: task 2.2 Migrate `propose_pending` and `_deliver` in `nightshift/specloop_intake.py` to late-created forge operations for listing, issue/PR reads, blockers, PR creation and labels, passing t • specloop: complete task 2.1 • specloop: task 2.1 Migrate the authorization and comment I/O helpers in `nightshift/specloop_intake.py`: issue-author lookup, label-event reads, membership requests, `_comment_label_rejection`, `_comm • specloop: complete task 1.2 • specloop: task 1.2 Complete the direct operations in `nightshift/forge/github.py` using the design's fixed argv inventory, semantic inputs and narrow raw-response exceptions. Extend `tests/test_forge_ • specloop: complete task 1.1 • specloop: task 1.1 Add `Forge`, `ForgeError` and frozen factual records in `nightshift/forge/__init__.py` and new `nightshift/forge/types.py`; retain the package docstring and avoid runtime import cyc • Merge branch 'main' into spec/mattpolicastro__nightshift-issue-133-evidence-mutation-testing-for-compiled-l • Merge pull request #141 from mattpolicastro/fix/land-skip-foreign-forge-rows • tests: treat EPERM as gone in the factory-land absent() helper • fix(land): ignore unrelated forge hosts during run discovery • specloop: archive mattpolicastro__nightshift-issue-133-evidence-mutation-testing-for-compiled-l into openspec/specs • Merge pull request #141 from mattpolicastro/fix/land-skip-foreign-forge-rows • tests: treat EPERM as gone in the factory-land absent() helper • fix(land): ignore unrelated forge hosts during run discovery • tests: treat EPERM as gone in the factory-land absent() helper • Merge current PR base 9c4c7258876169360707ba5327604651ad0f5166 • specloop: complete task 1.3 • specloop: task 1.3 Document and validate the Dart example. Update only the evidence section of `docs/specloop/README.md`, add `examples/specloop/dart.toml` and structural tests for real-parser step re • specloop: complete task 1.2 • specloop: task 1.2 Add C-family generation and preserve legacy behavior. In `specloop/evidence.py`, add the extension table, token guards and physical-line quote/comment rules, retain existing complet • specloop: complete task 1.1 • specloop: task 1.1 Add configurable invalid classification. In `specloop/manifest.py` and `specloop/evidence.py`, add the shared default, typed manifest field, validation/round-trip support and worker • Merge pull request #125 from mattpolicastro/spec/mattpolicastro__nightshift-issue-123-forge-gitea-http-transport-stdlib-urllib • specloop: archive mattpolicastro__nightshift-issue-123-forge-gitea-http-transport-stdlib-urllib into openspec/specs • Merge current PR base 1a78b001f9690ba0d84da4bfda00e07885ea9d1a • specloop: complete task 1.3 • specloop: task 1.3 Add failure classification, bounded GET retries and the per-attempt guard in `nightshift/forge/http.py`, with `test_get_retries_transient_but_writes_never_retry` and `test_guard_run • specloop: complete task 1.2 • specloop: task 1.2 Complete JSON request/response and helper semantics in `nightshift/forge/http.py` with tests in `tests/test_gitea_http.py`: uppercase methods, doseq query encoding, JSON headers/bod • specloop: complete task 1.1 • specloop: task 1.1 Establish the origin and redirect boundary in new `nightshift/forge/http.py`, add the docstring-only `nightshift/forge/__init__.py`, and start `tests/test_gitea_http.py` with local • Draft OpenSpec change mattpolicastro__nightshift-issue-123-forge-gitea-http-transport-stdlib-urllib (specloop propose, round 1) • Merge pull request #125 from mattpolicastro/spec/mattpolicastro__nightshift-issue-123-forge-gitea-http-transport-stdlib-urllib • specloop: archive mattpolicastro__nightshift-issue-123-forge-gitea-http-transport-stdlib-urllib into openspec/specs • Merge current PR base 1a78b001f9690ba0d84da4bfda00e07885ea9d1a • specloop: complete task 1.3 • specloop: task 1.3 Add failure classification, bounded GET retries and the per-attempt guard in `nightshift/forge/http.py`, with `test_get_retries_transient_but_writes_never_retry` and `test_guard_run • specloop: complete task 1.2 • specloop: task 1.2 Complete JSON request/response and helper semantics in `nightshift/forge/http.py` with tests in `tests/test_gitea_http.py`: uppercase methods, doseq query encoding, JSON headers/bod • specloop: complete task 1.1 • specloop: task 1.1 Establish the origin and redirect boundary in new `nightshift/forge/http.py`, add the docstring-only `nightshift/forge/__init__.py`, and start `tests/test_gitea_http.py` with local • Draft OpenSpec change mattpolicastro__nightshift-issue-123-forge-gitea-http-transport-stdlib-urllib (specloop propose, round 1) • specloop: archive mattpolicastro__nightshift-issue-123-forge-gitea-http-transport-stdlib-urllib into openspec/specs • Merge current PR base 1a78b001f9690ba0d84da4bfda00e07885ea9d1a • specloop: complete task 1.3 • specloop: task 1.3 Add failure classification, bounded GET retries and the per-attempt guard in `nightshift/forge/http.py`, with `test_get_retries_transient_but_writes_never_retry` and `test_guard_run • specloop: complete task 1.2 • specloop: task 1.2 Complete JSON request/response and helper semantics in `nightshift/forge/http.py` with tests in `tests/test_gitea_http.py`: uppercase methods, doseq query encoding, JSON headers/bod • specloop: complete task 1.1 • specloop: task 1.1 Establish the origin and redirect boundary in new `nightshift/forge/http.py`, add the docstring-only `nightshift/forge/__init__.py`, and start `tests/test_gitea_http.py` with local • Merge pull request #121 from mattpolicastro/plugin/paseo-0.13 • Merge pull request #124 from mattpolicastro/chore/d1-delete-dead-worker-github-code • Merge pull request #118 from mattpolicastro/spec/mattpolicastro__nightshift-issue-79-factory-page-a-land-action-for-runs-at-h • pr-revision: drop the Worker feedback compatibility requirement • chore: delete uncalled worker GitHub utilities • specloop: archive mattpolicastro__nightshift-issue-79-factory-page-a-land-action-for-runs-at-h into openspec/specs • plugin: support Paseo 0.13 • Merge current PR base 289c5ec3996e55fa75cf48d162d16f45402c0fc6 • specloop: complete task 1.8 • specloop: task 1.8 Strengthen the tests so each of these single-line mutations of code added in section 1 makes a test fail; where a mutation genuinely cannot change behaviour, say why in a comment on • specloop: strengthen section 1 after its evidence check • specloop: complete task 1.7 • specloop: task 1.7 Update `plugins/nightshift/README.md`, `docs/specloop/README.md`, `README.md`, `KNOWN-LIMITATIONS.md` and `docs/landing.md`, with root `tests/test_factory_land_docs.py`. Explain sep • specloop: complete task 1.6 • specloop: task 1.6 Integrate Land confirmation, Stop, existing refresh triggers and per-attempt notices in `plugins/nightshift/client/factory-model.ts` and `client/factory.tsx`, with plugin model/rend • specloop: complete task 1.5 • specloop: task 1.5 Add landing schemas and separate read/start/Stop RPCs in `plugins/nightshift/shared/factory.ts`, focused `server/factory-landing.ts` and `index.server.ts`, with plugin `tests/factor • specloop: complete task 1.4 • specloop: task 1.4 Implement Stop and normal signal shutdown entirely in `nightshift/factory_land.py`, with root `tests/test_factory_land_stop.py`. Verify recorded worker PID/start time and safe group • specloop: complete task 1.3 • specloop: task 1.3 Implement detached worker/child handoff and prior-execution exclusion in `nightshift/factory_land.py`, with root `tests/test_factory_land_worker.py` and `tests/test_factory_land_bou • specloop: complete task 1.2 • specloop: task 1.2 Bind the confirmed landing handoff and close its finish race in `nightshift/factory_land.py`, `specloop/cli.py` and the finish argv in `nightshift/land.py`, with root `tests/test_fa • specloop: complete task 1.1 • specloop: task 1.1 Add offer validation and small attempt/status records in `nightshift/factory_land.py`, with root `tests/test_factory_land_status.py`. Define private parsing, five-field admission va • Draft OpenSpec change mattpolicastro__nightshift-issue-79-factory-page-a-land-action-for-runs-at-h (specloop propose, round 2) • Draft OpenSpec change mattpolicastro__nightshift-issue-79-factory-page-a-land-action-for-runs-at-h (specloop propose, round 1) • Draft OpenSpec change mattpolicastro__nightshift-issue-79-factory-page-a-land-action-for-runs-at-h (specloop propose, round 2) • Draft OpenSpec change mattpolicastro__nightshift-issue-79-factory-page-a-land-action-for-runs-at-h (specloop propose, round 1) • Draft OpenSpec change mattpolicastro__nightshift-issue-79-factory-page-a-land-action-for-runs-at-h (specloop propose, round 2) • Draft OpenSpec change mattpolicastro__nightshift-issue-79-factory-page-a-land-action-for-runs-at-h (specloop propose, round 1) • Merge pull request #121 from mattpolicastro/plugin/paseo-0.13 • plugin: support Paseo 0.13 • Merge pull request #124 from mattpolicastro/chore/d1-delete-dead-worker-github-code • pr-revision: drop the Worker feedback compatibility requirement • chore: delete uncalled worker GitHub utilities • Merge pull request #118 from mattpolicastro/spec/mattpolicastro__nightshift-issue-79-factory-page-a-land-action-for-runs-at-h • specloop: archive mattpolicastro__nightshift-issue-79-factory-page-a-land-action-for-runs-at-h into openspec/specs • Merge current PR base 289c5ec3996e55fa75cf48d162d16f45402c0fc6 • specloop: complete task 1.8 • specloop: task 1.8 Strengthen the tests so each of these single-line mutations of code added in section 1 makes a test fail; where a mutation genuinely cannot change behaviour, say why in a comment on • specloop: strengthen section 1 after its evidence check • specloop: complete task 1.7 • specloop: task 1.7 Update `plugins/nightshift/README.md`, `docs/specloop/README.md`, `README.md`, `KNOWN-LIMITATIONS.md` and `docs/landing.md`, with root `tests/test_factory_land_docs.py`. Explain sep • specloop: complete task 1.6 • specloop: task 1.6 Integrate Land confirmation, Stop, existing refresh triggers and per-attempt notices in `plugins/nightshift/client/factory-model.ts` and `client/factory.tsx`, with plugin model/rend • specloop: complete task 1.5 • specloop: task 1.5 Add landing schemas and separate read/start/Stop RPCs in `plugins/nightshift/shared/factory.ts`, focused `server/factory-landing.ts` and `index.server.ts`, with plugin `tests/factor • specloop: complete task 1.4 • specloop: task 1.4 Implement Stop and normal signal shutdown entirely in `nightshift/factory_land.py`, with root `tests/test_factory_land_stop.py`. Verify recorded worker PID/start time and safe group • specloop: complete task 1.3 • specloop: task 1.3 Implement detached worker/child handoff and prior-execution exclusion in `nightshift/factory_land.py`, with root `tests/test_factory_land_worker.py` and `tests/test_factory_land_bou • specloop: complete task 1.2 • specloop: task 1.2 Bind the confirmed landing handoff and close its finish race in `nightshift/factory_land.py`, `specloop/cli.py` and the finish argv in `nightshift/land.py`, with root `tests/test_fa • specloop: complete task 1.1 • specloop: task 1.1 Add offer validation and small attempt/status records in `nightshift/factory_land.py`, with root `tests/test_factory_land_status.py`. Define private parsing, five-field admission va • Draft OpenSpec change mattpolicastro__nightshift-issue-79-factory-page-a-land-action-for-runs-at-h (specloop propose, round 2) • Draft OpenSpec change mattpolicastro__nightshift-issue-79-factory-page-a-land-action-for-runs-at-h (specloop propose, round 1) • Draft OpenSpec change mattpolicastro__nightshift-issue-79-factory-page-a-land-action-for-runs-at-h (specloop propose, round 2) • Draft OpenSpec change mattpolicastro__nightshift-issue-79-factory-page-a-land-action-for-runs-at-h (specloop propose, round 1) • Draft OpenSpec change mattpolicastro__nightshift-issue-79-factory-page-a-land-action-for-runs-at-h (specloop propose, round 2) • Draft OpenSpec change mattpolicastro__nightshift-issue-79-factory-page-a-land-action-for-runs-at-h (specloop propose, round 1) • specloop: archive mattpolicastro__nightshift-issue-79-factory-page-a-land-action-for-runs-at-h into openspec/specs

View commits
Browse the archive