Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
137e316
tests: scaffold failing CLI tests (version and PR list formatting)
flyingrobots Nov 6, 2025
8a524f9
feat(cli): minimal Python entrypoint with fake GH adapter; implements…
flyingrobots Nov 6, 2025
e8c6eb2
tests: enforce no absolute path literals within repo (mac/home/window…
flyingrobots Nov 6, 2025
25531f6
tests(core): add LoggingPort contract and non-JSON LLM handling tests…
flyingrobots Nov 6, 2025
501c8db
core+ports: add LoggingPort, LlmPort, GitPort; implement process_comm…
flyingrobots Nov 6, 2025
79751f4
tests(adapters): add failing tests for LLM command builder (codex/cla…
flyingrobots Nov 6, 2025
69998cc
adapters(llm): implement env-driven command builder + runner with cla…
flyingrobots Nov 6, 2025
4de0bec
tests(config+llm): config path under ~/.draft-punks/{repo}/config.jso…
flyingrobots Nov 6, 2025
e894fb3
adapters(config): read ~/.draft-punks/{repo}/config.json for llm/llm_…
flyingrobots Nov 6, 2025
cabae85
tests(github): add failing test to flatten paged review threads and c…
flyingrobots Nov 6, 2025
ece094f
core+ports+fake: add GitHubPort, domain types, fake paging adapter, a…
flyingrobots Nov 6, 2025
d12c5e4
docs: add examples/config.sample.json with llm, llm_cmd, force_json, …
flyingrobots Nov 6, 2025
1ab66a5
feat(voice): add OSX say adapter + bonus mode enable service; hidden …
flyingrobots Nov 6, 2025
56fb62f
voice(scope): add speak_comment_if_allowed enforcing read_scope=coder…
flyingrobots Nov 6, 2025
a84772e
feat: add gh CLI adapter with paging, Rich logger, minimal Textual TU…
flyingrobots Nov 6, 2025
36d60dc
tui: add comment viewer with BunBun voice; gh adapter includes author…
flyingrobots Nov 6, 2025
2eea504
tui+gh: PR picker lists open PRs; selection opens comment viewer; gh …
flyingrobots Nov 6, 2025
f4463b9
tui: add Textual log panel and progress; PR picker uses gh list_open_…
flyingrobots Nov 6, 2025
65fee43
tui: add summary/push, help, rewrite via ; git port push methods; gh …
flyingrobots Nov 6, 2025
b5f54f0
build: add textual runtime dep; dev extras with pytest
flyingrobots Nov 6, 2025
9e1ccac
tests(git): temp-repo test for is_commit/current/upstream/push
flyingrobots Nov 6, 2025
d283519
tests(gh): ensure adapters handle invalid/empty JSON without crashing
flyingrobots Nov 6, 2025
1c59181
tui: header counters with %; autos [AUTO] badges in list
flyingrobots Nov 6, 2025
193fa7d
feat(suggest): parse & apply CodeRabbit suggested replacements; tests…
flyingrobots Nov 6, 2025
b02ce02
feat(reply): gh post_reply; TUI thread replies on success when enable…
flyingrobots Nov 6, 2025
fef61aa
docs(cli): TUI README in PhiedBach voice (quickstart, keys, config)
flyingrobots Nov 6, 2025
5aa7f98
tui: rewrite comments viewer stable (header, modal, autos, apply sugg…
flyingrobots Nov 6, 2025
979229d
build: add requests for HTTP GitHub adapter
flyingrobots Nov 6, 2025
e280fc6
feat(gh-http): HTTP GitHub adapter using GH_TOKEN; selector tests for…
flyingrobots Nov 6, 2025
9d04e22
feat(gh): auto-select HTTP adapter when GH_TOKEN present; fallback to…
flyingrobots Nov 6, 2025
01697c8
gatos/git-mind: ref-native snapshot engine + JSONL API (v0.1)\n\n- Ad…
flyingrobots Nov 8, 2025
a4157a9
draft-punks: TUI compatibility & CLI polish\n\n- Textual OptionList c…
flyingrobots Nov 8, 2025
e0fe1fd
tools: bootstrap-git-mind exporter + Makefile target\n\n- Add tools/b…
flyingrobots Nov 8, 2025
9971333
docs: add STORY.md — origin, rationale, and forward vision for GATOS …
flyingrobots Nov 8, 2025
e49f88b
docs: add IDEAS.md — git-message-bus, git chat, consensus/grants, CRD…
flyingrobots Nov 8, 2025
f93ed92
tests(git_mind): failing tests for JSONL thread verbs (list/select/sh…
flyingrobots Nov 8, 2025
3d91ef3
feat(git_mind): add thread.list/select/show and llm.send debug path (…
flyingrobots Nov 8, 2025
39af47b
docs: document thread.* and llm.send debug in CLI-STATE; log pytest e…
flyingrobots Nov 8, 2025
6d59539
docs(ideas): add Git‑backed Redis concept — ref layout, semantics, TT…
flyingrobots Nov 8, 2025
60f5b36
docs: integration plan — align GATOS git mind with git-kv (Stargate):…
flyingrobots Nov 8, 2025
fe78107
docs(doghouse): seed flight recorder design brief
flyingrobots Mar 27, 2026
d1308c7
feat(doghouse): reboot project into doghouse flight recorder engine\n…
flyingrobots Mar 28, 2026
5145bd9
docs(doghouse): embellish identity and lore\n\n- Restore and enhance …
flyingrobots Mar 28, 2026
6f07c95
docs(readme): add physical humor and finishing touches\n\n- Add Phied…
flyingrobots Mar 28, 2026
aee587e
feat(doghouse): implement radar, local state, and blocking matrix\n\n…
flyingrobots Mar 28, 2026
4f339fb
opus(PR#5): seed rehearsal score (aee587e7aad9af37f73dd997dfbdef8dcbb…
Mar 28, 2026
56964e6
fix(doghouse): correct GitAdapter import path and add missing __init_…
flyingrobots Mar 28, 2026
cfcc3ee
opus(PR#5): seed rehearsal score (56964e6b72bbe7639f9c725c6e9f2327f75…
Mar 28, 2026
6d8640d
Fix: address CodeRabbit feedback and Doghouse dogfooding issues\n\n- …
flyingrobots Mar 28, 2026
d4def97
opus(PR#5): seed rehearsal score (6d8640d23be73ee61c9b962f90a4141768a…
Mar 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
name: CI

on:
push:
branches: [ main, feat/doghouse-reboot ]
pull_request:
branches: [ main ]

permissions:
contents: read
pull-requests: write

jobs:

test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install
run: |
python -m pip install --upgrade pip
pip install -e .[dev]
- name: Run tests
run: |
pytest -q
39 changes: 39 additions & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: Publish

on:
push:
tags:
- 'v[0-9]*.[0-9]*.[0-9]*'

permissions:
contents: read
id-token: write
Comment on lines +8 to +10
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

cat -n .github/workflows/publish.yml

Repository: flyingrobots/draft-punks

Length of output: 1113


Eliminate unnecessary OIDC token access in the build job.

The workflow-level id-token: write permission (lines 8-10) grants token-minting capability to the build job, which executes untrusted build logic (pip install, hatch build). The build job has zero legitimate need for OIDC tokens. Move id-token: write to the publish job only, as it's the sole consumer of PyPI OIDC authentication.

Scope the token to the publisher
 permissions:
   contents: read
-  id-token: write

 jobs:
   build:
     runs-on: ubuntu-latest
@@ -29,6 +29,8 @@ jobs:
   publish:
     needs: build
     runs-on: ubuntu-latest
     environment: pypi
+    permissions:
+      contents: read
+      id-token: write
     steps:
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/publish.yml around lines 8 - 10, The workflow currently
grants id-token: write at the workflow-level which gives the build job
unnecessary OIDC token minting capability; remove or change the top-level
permissions so id-token: write is not granted globally and instead add id-token:
write only to the publish job (the job that performs PyPI OIDC auth), leaving
the build job with no id-token permission (e.g., ensure build's permissions do
not include id-token and only publish job's permissions include id-token:
write); update the permissions block and the publish job's permissions
accordingly.


jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install hatch
run: pip install hatch
- name: Build package
run: hatch build
- uses: actions/upload-artifact@v4
with:
name: dist
path: dist/

publish:
needs: build
runs-on: ubuntu-latest
environment: pypi
steps:
- uses: actions/download-artifact@v4
with:
name: dist
path: dist/
- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
22 changes: 22 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Changelog

All notable changes to this project will be documented in this file.

## [Unreleased]

### Added
- **Doghouse Flight Recorder**: A new agent-native engine for PR state reconstruction.
- **CLI Subcommands**: `snapshot`, `history`, `watch`, `playback`, `export`.
- **Blocking Matrix**: Logic to distinguish Primary (conflicts) from Secondary (stale checks) blockers.
- **Local Awareness**: Detection of uncommitted/unpushed local repository state.
- **Machine-Readable Output**: `--json` flag for all major commands to support Thinking Automatons.
- **Repro Bundles**: `export` command to create "Manuscript Fragments" for debugging.

### Fixed
- **CI/CD Security**: Added top-level permissions to workflows and expanded branch scope.
- **Publishing Hygiene**: Refined tag patterns and split build/publish steps.
- **Core Immutability**: Ensure Snapshot and Blocker objects own immutable copies of data.
- **Deterministic Delta**: Sorted blocker IDs to ensure stable output across runs.
- **Error Handling**: Hardened subprocess calls with timeouts and missing-upstream detection.
- **Import Paths**: Fixed packaging bugs identified via recursive dogfooding.
Comment on lines +7 to +21
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Markdownlint still fails under these subheadings.

The ### Added and ### Fixed lists start immediately after the headings, so MD022 is still firing here. Add a blank line under each heading and keep the changelog lint-clean.

Patch
 ### Added
+
 - **Doghouse Flight Recorder**: A new agent-native engine for PR state reconstruction.
 - **CLI Subcommands**: `snapshot`, `history`, `watch`, `playback`, `export`.
 - **Blocking Matrix**: Logic to distinguish Primary (conflicts) from Secondary (stale checks) blockers.
@@
 ### Fixed
+
 - **CI/CD Security**: Added top-level permissions to workflows and expanded branch scope.
 - **Publishing Hygiene**: Refined tag patterns and split build/publish steps.
 - **Core Immutability**: Ensure Snapshot and Blocker objects own immutable copies of data.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
### Added
- **Doghouse Flight Recorder**: A new agent-native engine for PR state reconstruction.
- **CLI Subcommands**: `snapshot`, `history`, `watch`, `playback`, `export`.
- **Blocking Matrix**: Logic to distinguish Primary (conflicts) from Secondary (stale checks) blockers.
- **Local Awareness**: Detection of uncommitted/unpushed local repository state.
- **Machine-Readable Output**: `--json` flag for all major commands to support Thinking Automatons.
- **Repro Bundles**: `export` command to create "Manuscript Fragments" for debugging.
### Fixed
- **CI/CD Security**: Added top-level permissions to workflows and expanded branch scope.
- **Publishing Hygiene**: Refined tag patterns and split build/publish steps.
- **Core Immutability**: Ensure Snapshot and Blocker objects own immutable copies of data.
- **Deterministic Delta**: Sorted blocker IDs to ensure stable output across runs.
- **Error Handling**: Hardened subprocess calls with timeouts and missing-upstream detection.
- **Import Paths**: Fixed packaging bugs identified via recursive dogfooding.
### Added
- **Doghouse Flight Recorder**: A new agent-native engine for PR state reconstruction.
- **CLI Subcommands**: `snapshot`, `history`, `watch`, `playback`, `export`.
- **Blocking Matrix**: Logic to distinguish Primary (conflicts) from Secondary (stale checks) blockers.
- **Local Awareness**: Detection of uncommitted/unpushed local repository state.
- **Machine-Readable Output**: `--json` flag for all major commands to support Thinking Automatons.
- **Repro Bundles**: `export` command to create "Manuscript Fragments" for debugging.
### Fixed
- **CI/CD Security**: Added top-level permissions to workflows and expanded branch scope.
- **Publishing Hygiene**: Refined tag patterns and split build/publish steps.
- **Core Immutability**: Ensure Snapshot and Blocker objects own immutable copies of data.
- **Deterministic Delta**: Sorted blocker IDs to ensure stable output across runs.
- **Error Handling**: Hardened subprocess calls with timeouts and missing-upstream detection.
- **Import Paths**: Fixed packaging bugs identified via recursive dogfooding.
🧰 Tools
🪛 markdownlint-cli2 (0.22.0)

[warning] 7-7: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


[warning] 15-15: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@CHANGELOG.md` around lines 7 - 21, The changelog fails markdownlint MD022
because the lists under the headings `### Added` and `### Fixed` are placed
immediately after the headings; insert a single blank line after each heading
(i.e., after the `### Added` and after the `### Fixed` lines) so the bullet
lists are separated from their headings and the file becomes lint-clean.

- **Docs Drift**: Archived legacy Draft Punks TUI documentation to clear confusion.
47 changes: 47 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
.PHONY: dev-venv test snapshot history playback watch export clean help

VENV = .venv
PYTHON = $(VENV)/bin/python3
PIP = $(VENV)/bin/pip

help:
@echo "Doghouse Makefile"
@echo " dev-venv: Create venv and install dependencies"
@echo " test: Run unit tests"
@echo " snapshot [PR=id]: Capture PR state"
@echo " history [PR=id]: View PR snapshot history"
@echo " playback NAME=name: Run a playback fixture"
@echo " watch [PR=id]: Monitor PR live"
@echo " export [PR=id]: Create repro bundle"

dev-venv:
python3 -m venv $(VENV)
$(PIP) install --upgrade pip
$(PIP) install -e .[dev]

test:
PYTHONPATH=src $(PYTHON) -m pytest tests/doghouse

snapshot:
@if [ -z "$(PR)" ]; then PYTHONPATH=src $(PYTHON) -m doghouse.cli.main snapshot; \
else PYTHONPATH=src $(PYTHON) -m doghouse.cli.main snapshot --pr $(PR); fi

history:
@if [ -z "$(PR)" ]; then PYTHONPATH=src $(PYTHON) -m doghouse.cli.main history; \
else PYTHONPATH=src $(PYTHON) -m doghouse.cli.main history --pr $(PR); fi

playback:
@if [ -z "$(NAME)" ]; then echo "Usage: make playback NAME=pb1_push_delta"; exit 1; fi
PYTHONPATH=src $(PYTHON) -m doghouse.cli.main playback $(NAME)

watch:
@if [ -z "$(PR)" ]; then PYTHONPATH=src $(PYTHON) -m doghouse.cli.main watch; \
else PYTHONPATH=src $(PYTHON) -m doghouse.cli.main watch --pr $(PR); fi

export:
@if [ -z "$(PR)" ]; then PYTHONPATH=src $(PYTHON) -m doghouse.cli.main export; \
else PYTHONPATH=src $(PYTHON) -m doghouse.cli.main export --pr $(PR); fi

clean:
rm -rf build/ dist/ *.egg-info
find . -type d -name "__pycache__" -exec rm -rf {} +
83 changes: 83 additions & 0 deletions PRODUCTION_LOG.mg
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
# Draft Punks — Production Log

Guideline: Append an entry for any unexpected/unanticipated work, dependency, requirement, or risk we discover during implementation and testing.

Template

````markdown
## Incident: <title>

Timestamp: <YYYY-MM-DD HH:MM:SS local>

Task: <current task id>

### Problem

<problem description>

### Resolution

<resolution>

### What could we have done differently

<how could this have been anticipated? how should we have planned for this? what can we do better next time to avoid this sort of issue again?>
````

Initial Entries

- (none yet)

## Incident: Product Pivot to CLI-Only (Git-backed State)

Timestamp: 2025-11-07 19:07:32

Task: DP-F-20 / Sprint 0 planning

### Problem
TUI cannot be driven programmatically in our harness and is slower to iterate for both humans and LLMs.

### Resolution
Pivot to a CLI-only experience with a Git-backed state repo and JSONL stdio server. Update SPRINTS.md, add CLI-STATE.md, and refocus FEATURES/TASKLIST over time.

### What could we have done differently
Call out environment constraints earlier and consider dual-mode from day one. Favor CLI-first for automation-heavy tools; treat TUI as an optional skin over the same state engine.

## Incident: Local test runner missing (pytest not installed)

Timestamp: 2025-11-08 00:00:00

Task: DP-F-30 / Thread verbs + Debug LLM (tests-first)

### Problem
The environment lacks `pytest`, so tests could not be executed immediately after adding failing tests.

### Resolution
Committed failing tests first, then implemented the features. Left tests in place for local/CI execution. Next dev step is `make dev-venv && . .venv/bin/activate && pip install -e .[dev] && pytest`.

### What could we have done differently
Include a lightweight script or Makefile target that ensures a dev venv with pytest is provisioned before test steps, or run tests inside CI where the toolchain is guaranteed.

## Incident: Doghouse Reboot (The Great Pivot)

Timestamp: 2026-03-27

Task: DP-F-21

### Problem
Project had drifted into "GATOS" and "git-mind" concepts that strayed from the original PhiedBach vision and immediate needs.

### Resolution
Rebooted the project to focus on **DOGHOUSE**, the PR flight recorder. Deleted legacy TUI/kernel, implemented hexagonal core, and restored the original lore.

## Incident: Doghouse Refinement (Ze Radar)

Timestamp: 2026-03-28

Task: Refinement & CodeRabbit Feedback

### Problem
The initial Doghouse cut lacked live monitoring, repro capabilities, and sensitivity to merge conflicts vs. secondary check failures.

### Resolution
Implemented `doghouse watch`, `doghouse export`, and the Blocking Matrix. Hardened adapters with timeouts and deduplication. Addressed 54 threads of feedback.
Loading
Loading