Everything's an experiment.

Notes on work, tech, and life.

Recent updates:

GitHubpush

Merge pull request #181 from mattpolicastro/spec/mattpolicastro__nightshift-issue-179-admission-a-validator-timeout-is-transie

Pushed 69 commits to mattpolicastro/nightshift • specloop: archive mattpolicastro__nightshift-issue-179-admission-a-validator-timeout-is-transie into openspec/specs • specloop: complete task 1.1 • specloop: task 1.1 After #174, implement `ValidatorUnavailable(SpecError)` and single-call classification in `specloop/openspec.py`; narrowly forward it through admission/drafting validate-call handli • Draft OpenSpec change mattpolicastro__nightshift-issue-179-admission-a-validator-timeout-is-transie (specloop propose, round 3) • Draft OpenSpec change mattpolicastro__nightshift-issue-179-admission-a-validator-timeout-is-transie (specloop propose, round 2) • Draft OpenSpec change mattpolicastro__nightshift-issue-179-admission-a-validator-timeout-is-transie (specloop propose, round 1) • specloop: archive mattpolicastro__nightshift-issue-179-admission-a-validator-timeout-is-transie into openspec/specs • specloop: complete task 1.1 • specloop: task 1.1 After #174, implement `ValidatorUnavailable(SpecError)` and single-call classification in `specloop/openspec.py`; narrowly forward it through admission/drafting validate-call handli • Merge pull request #178 from mattpolicastro/spec/mattpolicastro__nightshift-issue-174-runs-use-the-source-clone-s-repo-local-c • Merge branch 'main' into spec/mattpolicastro__nightshift-issue-174-runs-use-the-source-clone-s-repo-local-c • specloop: archive mattpolicastro__nightshift-issue-174-runs-use-the-source-clone-s-repo-local-c into openspec/specs • Merge current PR base 19b1213ac2f1a27832a030127028f332e2b20e02 • specloop: complete task 1.4 • specloop: task 1.4 Extend `specloop/cli.py:_push` with optional keyword-only source and pass `ctx.m.repo` from both publish and finish. Use the shared helper environment and sanitized binary-output bo • specloop: complete task 1.3 • specloop: task 1.3 Prepare push test compatibility before changing the production signature: migrate `_push` doubles/wrappers in `tests/test_specloop_act.py`, `tests/test_specloop_command_json.py`, `t • specloop: complete task 1.2 • specloop: task 1.2 Integrate helper forwarding and the safe failure boundary into `specloop/loop.py:_fetch_publish_base`, preserving the no-helper branch, fetch limits and caller recovery. Add new `te • specloop: complete task 1.1 • specloop: task 1.1 Add the shared byte-preserving helper reader, indexed-config environment builder and byte-first diagnostic formatter in `specloop/loop.py`, with tests in new `tests/test_specloop_cr • Draft OpenSpec change mattpolicastro__nightshift-issue-174-runs-use-the-source-clone-s-repo-local-c (specloop propose, round 2) • Draft OpenSpec change mattpolicastro__nightshift-issue-174-runs-use-the-source-clone-s-repo-local-c (specloop propose, round 1) • specloop: archive mattpolicastro__nightshift-issue-174-runs-use-the-source-clone-s-repo-local-c into openspec/specs • Merge pull request #176 from mattpolicastro/spec/mattpolicastro__nightshift-issue-164-verify-mark-truncated-output-and-name-th • Merge branch 'main' into spec/mattpolicastro__nightshift-issue-164-verify-mark-truncated-output-and-name-th • specloop: archive mattpolicastro__nightshift-issue-164-verify-mark-truncated-output-and-name-th into openspec/specs • Merge current PR base 19b1213ac2f1a27832a030127028f332e2b20e02 • specloop: complete task 1.1 • specloop: task 1.1 Preserve traceable verification tails: in `specloop/verify.py`, format only logs over 2,000 raw bytes with the specified marker plus newline and unchanged decoded tail, add and forw • Draft OpenSpec change mattpolicastro__nightshift-issue-164-verify-mark-truncated-output-and-name-th (specloop propose, round 1) • Merge branch 'main' into spec/mattpolicastro__nightshift-issue-164-verify-mark-truncated-output-and-name-th • Merge pull request #175 from mattpolicastro/spec/mattpolicastro__nightshift-issue-163-seal-always-freeze-agent-steering-files • specloop: archive mattpolicastro__nightshift-issue-163-seal-always-freeze-agent-steering-files into openspec/specs • Merge current PR base 19b1213ac2f1a27832a030127028f332e2b20e02 • Merge current PR base 594a3d252ba4a83b70e5b5309e1ba64eaa628f33 • specloop: complete task 1.1 • specloop: task 1.1 Update `specloop/seal.py`'s `_unsafe` and seal-time frozen-path handling as designed so the five reserved steering components are frozen at every depth, with unchanged files quiet a • Draft OpenSpec change mattpolicastro__nightshift-issue-163-seal-always-freeze-agent-steering-files (specloop propose, round 1) • Merge pull request #175 from mattpolicastro/spec/mattpolicastro__nightshift-issue-163-seal-always-freeze-agent-steering-files • specloop: archive mattpolicastro__nightshift-issue-163-seal-always-freeze-agent-steering-files into openspec/specs • Merge current PR base 19b1213ac2f1a27832a030127028f332e2b20e02 • Merge current PR base 594a3d252ba4a83b70e5b5309e1ba64eaa628f33 • specloop: complete task 1.1 • specloop: task 1.1 Update `specloop/seal.py`'s `_unsafe` and seal-time frozen-path handling as designed so the five reserved steering components are frozen at every depth, with unchanged files quiet a • Draft OpenSpec change mattpolicastro__nightshift-issue-163-seal-always-freeze-agent-steering-files (specloop propose, round 1) • Merge current PR base 19b1213ac2f1a27832a030127028f332e2b20e02 • specloop: complete task 1.4 • Merge pull request #177 from mattpolicastro/spec/mattpolicastro__nightshift-issue-162-agents-classify-usage-limits-from-rate-l • specloop: task 1.4 Extend `specloop/cli.py:_push` with optional keyword-only source and pass `ctx.m.repo` from both publish and finish. Use the shared helper environment and sanitized binary-output bo • Merge branch 'main' into spec/mattpolicastro__nightshift-issue-162-agents-classify-usage-limits-from-rate-l • specloop: archive mattpolicastro__nightshift-issue-162-agents-classify-usage-limits-from-rate-l into openspec/specs • specloop: complete task 1.3 • Merge pull request #180 from mattpolicastro/ci/canary-version-check • specloop: task 1.3 Prepare push test compatibility before changing the production signature: migrate `_push` doubles/wrappers in `tests/test_specloop_act.py`, `tests/test_specloop_command_json.py`, `t • specloop: complete task 1.2 • CI: plugin canary on schedule/dispatch only; print the SDK version instead of npm ls • specloop: task 1.2 Integrate helper forwarding and the safe failure boundary into `specloop/loop.py:_fetch_publish_base`, preserving the no-helper branch, fetch limits and caller recovery. Add new `te • specloop: complete task 1.1 • specloop: task 1.1 Add the shared byte-preserving helper reader, indexed-config environment builder and byte-first diagnostic formatter in `specloop/loop.py`, with tests in new `tests/test_specloop_cr • specloop: complete task 2.1 • specloop: task 2.1 Make the harness's verification pass on the branch head: (details: tests: expected exit 0, got timeout (FAIL, 900.05s)) • specloop: append acceptance fixes tasks • specloop: complete task 1.2 • specloop: task 1.2 Connect structured quota waits and the overage hold to admitted work (target at most 300 changed lines including tests and docs). Extend specloop/quota.py:resume_at and minimally ed • specloop: complete task 1.1 • specloop: task 1.1 Implement shared Claude telemetry decoding and classification (target at most 300 changed lines including tests). Extract the rate-limit decoder in nightshift/trace.py; append and p • Draft OpenSpec change mattpolicastro__nightshift-issue-162-agents-classify-usage-limits-from-rate-l (specloop propose, round 1)

View commits
GitHubpr merged

Spec: Admission: a validator timeout is transient infra, not a spec refusal

Merged PR in mattpolicastro/nightshift: "Spec: Admission: a validator timeout is transient infra, not a spec refusal"

View pull request
GitHubpr merged

Spec: Runs: use the source clone's repo-local credential helpers for base fetch and publish push

Merged PR in mattpolicastro/nightshift: "Spec: Runs: use the source clone's repo-local credential helpers for base fetch and publish push"

View pull request
GitHubpr merged

Spec: Verify: mark truncated output and name the full log

Merged PR in mattpolicastro/nightshift: "Spec: Verify: mark truncated output and name the full log"

View pull request
GitHubpr merged

Spec: Seal: always freeze agent-steering files (AGENTS.md, CLAUDE.md, .claude, .mcp.json)

Merged PR in mattpolicastro/nightshift: "Spec: Seal: always freeze agent-steering files (AGENTS.md, CLAUDE.md, .claude, .mcp.json)"

View pull request
GitHubpush

specloop: archive mattpolicastro__nightshift-issue-163-seal-always-freeze-agent-steering-files into openspec/specs

Pushed 44 commits to mattpolicastro/nightshift • Merge current PR base 19b1213ac2f1a27832a030127028f332e2b20e02 • Merge pull request #177 from mattpolicastro/spec/mattpolicastro__nightshift-issue-162-agents-classify-usage-limits-from-rate-l • Merge current PR base 594a3d252ba4a83b70e5b5309e1ba64eaa628f33 • Merge branch 'main' into spec/mattpolicastro__nightshift-issue-162-agents-classify-usage-limits-from-rate-l • specloop: archive mattpolicastro__nightshift-issue-162-agents-classify-usage-limits-from-rate-l into openspec/specs • Merge pull request #180 from mattpolicastro/ci/canary-version-check • CI: plugin canary on schedule/dispatch only; print the SDK version instead of npm ls • specloop: complete task 2.1 • specloop: task 2.1 Make the harness's verification pass on the branch head: (details: tests: expected exit 0, got timeout (FAIL, 900.05s)) • specloop: append acceptance fixes tasks • specloop: complete task 1.2 • specloop: task 1.2 Connect structured quota waits and the overage hold to admitted work (target at most 300 changed lines including tests and docs). Extend specloop/quota.py:resume_at and minimally ed • specloop: complete task 1.1 • specloop: complete task 1.1 • specloop: task 1.1 Implement shared Claude telemetry decoding and classification (target at most 300 changed lines including tests). Extract the rate-limit decoder in nightshift/trace.py; append and p • specloop: task 1.1 Update `specloop/seal.py`'s `_unsafe` and seal-time frozen-path handling as designed so the five reserved steering components are frozen at every depth, with unchanged files quiet a • Draft OpenSpec change mattpolicastro__nightshift-issue-162-agents-classify-usage-limits-from-rate-l (specloop propose, round 1) • Merge current PR base 19b1213ac2f1a27832a030127028f332e2b20e02 • Merge pull request #177 from mattpolicastro/spec/mattpolicastro__nightshift-issue-162-agents-classify-usage-limits-from-rate-l • Merge branch 'main' into spec/mattpolicastro__nightshift-issue-162-agents-classify-usage-limits-from-rate-l • specloop: archive mattpolicastro__nightshift-issue-162-agents-classify-usage-limits-from-rate-l into openspec/specs • Merge pull request #180 from mattpolicastro/ci/canary-version-check • CI: plugin canary on schedule/dispatch only; print the SDK version instead of npm ls • specloop: complete task 2.1 • specloop: task 2.1 Make the harness's verification pass on the branch head: (details: tests: expected exit 0, got timeout (FAIL, 900.05s)) • specloop: append acceptance fixes tasks • specloop: complete task 1.1 • specloop: task 1.1 Preserve traceable verification tails: in `specloop/verify.py`, format only logs over 2,000 raw bytes with the specified marker plus newline and unchanged decoded tail, add and forw • specloop: complete task 1.2 • specloop: task 1.2 Connect structured quota waits and the overage hold to admitted work (target at most 300 changed lines including tests and docs). Extend specloop/quota.py:resume_at and minimally ed • specloop: complete task 1.1 • specloop: task 1.1 Implement shared Claude telemetry decoding and classification (target at most 300 changed lines including tests). Extract the rate-limit decoder in nightshift/trace.py; append and p • Draft OpenSpec change mattpolicastro__nightshift-issue-162-agents-classify-usage-limits-from-rate-l (specloop propose, round 1) • specloop: archive mattpolicastro__nightshift-issue-162-agents-classify-usage-limits-from-rate-l into openspec/specs • Merge pull request #180 from mattpolicastro/ci/canary-version-check • CI: plugin canary on schedule/dispatch only; print the SDK version instead of npm ls • specloop: complete task 2.1 • specloop: task 2.1 Make the harness's verification pass on the branch head: (details: tests: expected exit 0, got timeout (FAIL, 900.05s)) • specloop: append acceptance fixes tasks • specloop: complete task 1.2 • specloop: task 1.2 Connect structured quota waits and the overage hold to admitted work (target at most 300 changed lines including tests and docs). Extend specloop/quota.py:resume_at and minimally ed • specloop: complete task 1.1 • specloop: task 1.1 Implement shared Claude telemetry decoding and classification (target at most 300 changed lines including tests). Extract the rate-limit decoder in nightshift/trace.py; append and p

View commits
GitHubpr merged

Spec: Agents: classify usage limits from rate_limit_event, not the agent's own words

Merged PR in mattpolicastro/nightshift: "Spec: Agents: classify usage limits from rate_limit_event, not the agent's own words"

View pull request
GitHubpr merged

CI: plugin canary on schedule/dispatch only; print SDK version instead of npm ls

Merged PR in mattpolicastro/nightshift: "CI: plugin canary on schedule/dispatch only; print SDK version instead of npm ls"

View pull request
Browse the archive