Repository navigation
Add CI gates, close out cycle 0006, and refine guidance #3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
16 commits
Select commit
Hold shift + click to select a range
8e41933
docs: start ci gates cycle
flyingrobots c6b5f97
docs: design ci gates cycle
flyingrobots adfbe2a
test: define ci gate contract
flyingrobots 0851f8e
ci: add minimal build and test workflow
flyingrobots 408d992
chore: close out ci gates cycle
flyingrobots a0a2443
docs: separate cycle closeout from ship sync
flyingrobots 72b9432
docs: capture retro closeout idea
flyingrobots d4f9477
docs: add method guide
flyingrobots 76e5fef
docs: clarify cycle closeout and ship sync
flyingrobots 2a875cf
chore: ignore obsidian workspace
flyingrobots 625de41
docs: harden ci contract and review visibility
flyingrobots bc0629a
docs: narrow review visibility and harden ci
flyingrobots 2ea821e
build: drop node 18 support
flyingrobots e6cc1d6
docs: tighten ci review follow-up
flyingrobots 5c88d73
docs(backlog): add library API surface item
flyingrobots 0e8a6a4
ci: harden checkout credentials
flyingrobots File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,33 @@ | ||
| name: CI | ||
|
|
||
| on: | ||
| push: | ||
| pull_request: | ||
|
|
||
| permissions: | ||
| contents: read | ||
|
|
||
| jobs: | ||
| test: | ||
| runs-on: ubuntu-24.04 | ||
| timeout-minutes: 10 | ||
| steps: | ||
| - name: Checkout repository | ||
| uses: actions/checkout@v4 | ||
|
coderabbitai[bot] marked this conversation as resolved.
|
||
| with: | ||
| persist-credentials: false | ||
|
|
||
| - name: Set up Node.js | ||
| uses: actions/setup-node@v4 | ||
| with: | ||
| node-version: 22 | ||
| cache: npm | ||
|
|
||
| - name: Install dependencies | ||
| run: npm ci | ||
|
|
||
| - name: Build | ||
| run: npm run build | ||
|
|
||
| - name: Run tests | ||
| run: npm test | ||
|
flyingrobots marked this conversation as resolved.
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -3,3 +3,4 @@ dist/ | |
| __pycache__/ | ||
| *.pyc | ||
| .DS_Store | ||
| .obsidian/ | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,122 @@ | ||
| # CI Gates | ||
|
|
||
| Source backlog item: `docs/method/backlog/asap/PROCESS_ci-gates.md` | ||
| Legend: PROCESS | ||
|
|
||
| ## Sponsors | ||
|
|
||
| - Human: I can push a branch or open a PR and get automatic proof that | ||
| METHOD still builds and its tests still pass, without relying on | ||
| memory or local-only verification. | ||
| - Agent: I can point to one committed CI workflow whose trigger | ||
| surface, runtime, install mode, and commands match the repo's actual | ||
| truth surfaces exactly. | ||
|
|
||
| ## Hill | ||
|
|
||
| METHOD ships a minimal CI gate for this repo, implemented as a | ||
| GitHub Actions workflow that runs install, build, and tests on `push` | ||
| and `pull_request`, and documents that contract clearly in repo-visible | ||
| files. | ||
|
|
||
| ## Playback Questions | ||
|
|
||
| ### Human | ||
|
|
||
| - [ ] Can I inspect the repo and see which automated checks guard | ||
| pushes and PRs, without reading chat history or relying on | ||
| remembered local commands? | ||
| - [ ] If CI fails, does the workflow name the failing step clearly | ||
| enough that I can reproduce it locally with the same commands? | ||
|
|
||
| ### Agent | ||
|
|
||
| - [ ] Are the workflow triggers, Node version, dependency-install | ||
| strategy, and executed commands explicit in committed files rather | ||
| than hidden in GitHub settings or tool defaults? | ||
|
flyingrobots marked this conversation as resolved.
|
||
| - [ ] Does the first cut stay narrow and deterministic by running only | ||
| the repo's current truth surfaces (`npm ci`, `npm run build`, | ||
| `npm test`) with stable exit behavior? | ||
|
|
||
| ## Accessibility and Assistive Reading | ||
|
|
||
| - Linear truth / reduced-complexity posture: the workflow and docs | ||
| should read as plain text from top to bottom. Step names should be | ||
| concise and action-shaped so a failure is understandable without | ||
| badges, color, or GitHub UI chrome. | ||
| - Non-visual or alternate-reading expectations: the repo should state | ||
| the CI commands and workflow path directly in prose so a screen-reader | ||
| user, terminal-only operator, or agent can reconstruct the contract | ||
| without parsing screenshots or badges. | ||
|
|
||
| ## Localization and Directionality | ||
|
|
||
| - Locale / wording / formatting assumptions: first cut may use English | ||
| workflow names and status wording. Localization of CI messages is not | ||
| part of this cycle. | ||
| - Logical direction / layout assumptions: the contract should rely on | ||
| textual step order and command names, not left/right layout or other | ||
| direction-bound presentation. | ||
|
|
||
| ## Agent Inspectability and Explainability | ||
|
|
||
| - What must be explicit and deterministic for agents: the workflow file | ||
| path, triggers, Node version, cache/install behavior, and executed | ||
| commands must all be committed in the repo. There should be no hidden | ||
| logic in branch settings, local shell aliases, or chat-only policy. | ||
| - What must be attributable, evidenced, or governed: playback and | ||
| closeout must be able to point to the workflow file, the commands it | ||
| runs, and the local reproduction path. This cycle may note required | ||
| GitHub settings, but it does not rely on hidden branch-protection | ||
| state as proof. | ||
|
|
||
| ## Non-goals | ||
|
|
||
| - [ ] Adding linting, formatting, or broader quality gates beyond the | ||
| current build/test truth surfaces. | ||
| - [ ] Adding release, publish, or package-version automation. | ||
| - [ ] Adding a multi-OS or multi-version matrix. First cut should keep | ||
| one explicit supported runtime. | ||
| - [ ] Generalizing CI across every forge or turning GitHub Actions into | ||
| METHOD doctrine. This cycle is a repo-local adapter for this repo. | ||
| - [ ] Hardening CodeRabbit config or broader PR-review workflow policy. | ||
| Those remain separate backlog items. | ||
|
|
||
| ## Decisions To Make | ||
|
|
||
| - Which Node version the workflow should run in for the first cut. | ||
| Final choice: run Node `22` only and align the repo support floor to | ||
| that decision. | ||
| - Whether the workflow should run any METHOD-specific smoke command | ||
| beyond build/test, or whether `npm run build` and `npm test` are the | ||
| full first-cut contract. | ||
| - How much of the CI policy should be documented in `README.md` and | ||
| `docs/BEARING.md` versus left implicit in the workflow file itself. | ||
|
|
||
| ## Backlog Context | ||
|
|
||
| METHOD should not rely on a human remembering to run tests before | ||
| push or merge. Add a minimal CI workflow that runs the repo's actual | ||
| truth surfaces on `push` and `pull_request`: build, test, and any | ||
| required docs or status checks that are supposed to stay green. | ||
|
|
||
| Session context: | ||
|
|
||
| - During PR review of the `drift-detector` cycle, CodeRabbit called out | ||
| the absence of CI as a contradiction: the repo claims strict review | ||
| and drift discipline, but there is no automated gate for `npm test` | ||
| or `npm run build`. | ||
| - That critique is right. METHOD should make the passing state | ||
| reproducible and machine-checked, not dependent on operator memory. | ||
| - This repo already has a `package-lock.json`, so the first cut can use | ||
| `npm ci` for deterministic dependency installation rather than | ||
| open-ended install behavior. | ||
|
|
||
| What this surfaced: | ||
|
|
||
| - CI is infrastructure truth, not optional decoration. | ||
| - The first cut can stay narrow: build plus tests. | ||
| - Later cycles can add stronger checks, but the repo should stop | ||
| pretending manual verification is enough for merge safety. | ||
| - METHOD itself should stay forge-agnostic, but this repo can still use | ||
| GitHub Actions as its current host adapter. | ||
This file was deleted.
Oops, something went wrong.
34 changes: 34 additions & 0 deletions
34
docs/method/backlog/inbox/PROCESS_retro-conversational-closeout.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,34 @@ | ||
| # Retro conversational closeout | ||
|
|
||
| METHOD's `close` flow currently handles the mechanical part of a retro: | ||
| create the retro doc, create `witness/`, and record the outcome. It | ||
| does not yet help the human sponsor actually think through the | ||
| retrospective or capture their side of the playback honestly. | ||
|
|
||
| Add CLI tooling for the retro stage that prompts the human user for | ||
| their input instead of dropping them into a blank markdown skeleton. | ||
| The strongest version would not just ask one-shot questions; it would | ||
| support a conversational back-and-forth with the agent so the retro can | ||
| feel like a real structured retrospective rather than form fill. | ||
|
|
||
| Questions this should answer: | ||
|
|
||
| - What parts of the retro should be prompted versus still hand-written? | ||
| - Should the CLI gather both sponsor viewpoints explicitly: human and | ||
| agent? | ||
| - How should the tool preserve honesty instead of steering the user | ||
| toward "hill met" boilerplate? | ||
| - What should happen when the conversation surfaces new debt, cool | ||
| ideas, or backlog maintenance actions? | ||
| - Should the output be direct markdown, a draft witness artifact, or a | ||
| staged review step before files are written? | ||
| - How much of this belongs in METHOD doctrine versus repo-local CLI UX? | ||
|
|
||
| What this surfaced: | ||
|
|
||
| - The current closeout flow is mechanically correct but emotionally a | ||
| little abrupt. | ||
| - Retro quality depends too much on the operator being willing to write | ||
| from scratch after the command has already declared the cycle closed. | ||
| - A structured human/agent exchange could make retros more honest and | ||
| more useful without turning METHOD into meeting theater. |
48 changes: 48 additions & 0 deletions
48
docs/method/backlog/up-next/PROCESS_git-branch-workflow-policy.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,48 @@ | ||
| # Git branch workflow policy | ||
|
|
||
| METHOD should define a git branch naming and workflow policy that is | ||
| clear enough for humans and agents to follow without improvising. Right | ||
| now the repo has doctrine for cycles, backlog lanes, retros, and | ||
| witnesses, but branch creation, branch naming, local `main` hygiene, | ||
| push policy, and PR expectations are still implicit. | ||
|
|
||
| Session context: | ||
|
|
||
| - Recent work in `method` exposed repeated uncertainty around branch | ||
| handling: whether to work directly on `main`, when to branch for a | ||
| cycle, how to name PR branches versus cycle branches, whether backlog | ||
| triage belongs on a side branch, and when local `main` should be | ||
| synced or left alone. | ||
| - External tool defaults also pushed their own assumptions into the | ||
| repo, such as draft PRs, title prefixes, and PR-oriented workflow | ||
| conventions that did not actually come from METHOD. | ||
| - At the same time, the repo has a clear stance that METHOD is not a | ||
| GitHub workflow or a PR cockpit. So whatever policy exists should be | ||
| forge-agnostic at the core, with forge-aware adapters. | ||
|
|
||
|
flyingrobots marked this conversation as resolved.
|
||
| Questions this policy should answer: | ||
|
|
||
| - When should work happen directly on `main`, and when should it happen | ||
| on a branch? | ||
| - Should active cycles default to branches named after the cycle, such | ||
| as `0006-ci-gates`, or is that optional? | ||
| - What naming forms are valid for maintenance branches, backlog triage, | ||
| review follow-up, or one-off operator work? | ||
| - What is the expected lifecycle for local `main` after PR merges? | ||
| - When is a PR required, preferred, or unnecessary? | ||
| - How should agents avoid silently importing external workflow | ||
| conventions that the repo did not choose? | ||
| - How should this policy relate to optional sidecars like Draft Punks | ||
| Doghouse without making METHOD itself a forge-specific system? | ||
|
|
||
| What this surfaced: | ||
|
|
||
| - METHOD needs branch/workflow doctrine, not just filesystem doctrine. | ||
| - The policy should distinguish cycle branches, temporary operator | ||
| branches, and direct-maintenance cases. | ||
| - The policy should remain forge-agnostic at the core, even if a repo | ||
| uses GitHub or tools like Doghouse in practice. | ||
| - A likely rule from recent practice: close the cycle packet on the | ||
| branch before review (design, tests, playback, retro, witness), then | ||
| do repo-level ship sync such as `BEARING.md` and `CHANGELOG.md` on | ||
| `main` after merge. | ||
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.