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 requestNotes on work, tech, and life.
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 requestSpec: Forge: land on Gitea with the human token
Merged PR in mattpolicastro/nightshift: "Spec: Forge: land on Gitea with the human token"
View pull requestplugin: open forge links in the system browser
Merged PR in mattpolicastro/nightshift: "plugin: open forge links in the system browser"
View pull requestSpec: 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 requestSpec: Manifest: per-step env table
Merged PR in mattpolicastro/nightshift: "Spec: Manifest: per-step env table"
View pull requestBefore you embark on a journey of revenge,
🐔 Brian Bucklew 🐔 ₑͤ>∿<ₑͤ ∞🌮 (@unormal.bsky.social)View on Blueskybuy 2 burritos and put one in the fridge for later
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 commitsSpec: 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 requestHad 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)View on BlueskyI 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?
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