Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
73 commits
Select commit Hold shift + click to select a range
c2d7094
docs: cycle close — retrospective, changelog, design alignment audit
flyingrobots Apr 1, 2026
8b6276c
docs: honest drift audit — B171-B174 backlog items, updated retro
flyingrobots Apr 1, 2026
c654184
chore: migrate ROADMAP items to flat BACKLOG — drop milestones
flyingrobots Apr 1, 2026
baef5f9
chore: migrate to flat BACKLOG + cycles — drop milestones and ROADMAP
flyingrobots Apr 1, 2026
faa634c
chore: B175 — Guide observer-first client pattern
flyingrobots Apr 1, 2026
8ad60c7
chore: B176-B178 — audit-driven high-priority backlog items
flyingrobots Apr 1, 2026
a94d9ea
chore: B179 — sync auth Ed25519 migration (HIGH)
flyingrobots Apr 1, 2026
fc2e3c5
chore: B180 — observer redaction threat model documentation (MEDIUM)
flyingrobots Apr 1, 2026
9fda7f4
chore: fold B180 (redaction docs) into B175 — not a standalone item
flyingrobots Apr 1, 2026
56b8fff
chore: B181 — max file size + one-thing-per-file policy (HIGH)
flyingrobots Apr 1, 2026
e9d272d
chore: introduce The Method — filesystem-native dev process (cycle 0001)
flyingrobots Apr 2, 2026
73619db
chore: declare CLEAN_CODE legend — structural quality domain
flyingrobots Apr 2, 2026
dc1252c
design: code-nav AST-aware symbol extraction tool (cycle 0002)
flyingrobots Apr 2, 2026
ef89889
design: add before/after scenarios with token + context analysis
flyingrobots Apr 2, 2026
10d27b5
design: rewrite as safe-context — replay-safe structural reads
flyingrobots Apr 2, 2026
0d29b39
retro: close cycle 0002 — code-nav pivoted to safe-context
flyingrobots Apr 2, 2026
d27b0eb
design: cycle 0003 safe-context Phase 1 — The Governor
flyingrobots Apr 2, 2026
98126ec
cool-idea: WARP provenance layer for safe-context
flyingrobots Apr 2, 2026
ac2dce2
design: rename safe-context to graft
flyingrobots Apr 2, 2026
22a23e1
design: apply review feedback — close all escape hatches
flyingrobots Apr 2, 2026
4227e4c
design: add enforcement hooks, doctor, stats, agent ideas
flyingrobots Apr 2, 2026
48a8707
design: add .graftignore — gitignore-style policy file
flyingrobots Apr 2, 2026
d75186c
design: apply round 2 review — close all remaining gaps
flyingrobots Apr 2, 2026
3ebf3b7
cool-ideas: graft post-Phase 1 ideas from design review
flyingrobots Apr 2, 2026
3e442e8
design: add internal vocabulary — graft as applied WARP optics
flyingrobots Apr 2, 2026
125a772
retro: close cycle 0003 — graft design complete, impl moves to new repo
flyingrobots Apr 2, 2026
251e165
fix(test): update release-policy-shape path after docs restructure
flyingrobots Apr 2, 2026
f6a6e33
refactor: replace RECEIPT_OP_TYPE mapping with OpStrategy.receiptName
flyingrobots Apr 2, 2026
4d3fd44
fix: replace raw Error with SyncError for E_SYNC_DIVERGENCE
flyingrobots Apr 2, 2026
55d45b8
refactor: replace raw Errors in AuditReceiptService with AuditError
flyingrobots Apr 2, 2026
cf36867
fix(cli): replace __dirname polyfill with import.meta.url resolution
flyingrobots Apr 2, 2026
a98e8f1
refactor(lint): restore dot-notation via @typescript-eslint/dot-notation
flyingrobots Apr 2, 2026
ef80da5
chore: update CHANGELOG and close resolved backlog items
flyingrobots Apr 2, 2026
a0bb210
refactor: promote AuditReceipt from typedef to concrete class
flyingrobots Apr 2, 2026
235e2d6
chore: log 14 typedef-to-class backlog items in bad-code/
flyingrobots Apr 2, 2026
addb290
chore: add NO_DOGS_NO_MASTERS legend (NDNM)
flyingrobots Apr 2, 2026
48889be
refactor(NDNM): extract StrandController from WarpRuntime
flyingrobots Apr 2, 2026
6080e26
refactor(NDNM): extract ComparisonController from WarpRuntime
flyingrobots Apr 2, 2026
f92dadf
refactor(NDNM): extract SubscriptionController from WarpRuntime
flyingrobots Apr 2, 2026
a83d649
refactor(NDNM): extract ProvenanceController from WarpRuntime
flyingrobots Apr 2, 2026
8fb1799
refactor(NDNM): extract ForkController from WarpRuntime
flyingrobots Apr 2, 2026
3b08412
refactor(NDNM): extract QueryController from WarpRuntime
flyingrobots Apr 2, 2026
090b658
docs: update CHANGELOG with decomposition and tech debt work
flyingrobots Apr 2, 2026
fbccc1d
fix: address CodeRabbit PR #74 review feedback
flyingrobots Apr 2, 2026
07d0736
fix: repair 4 broken links from backlog migration
flyingrobots Apr 2, 2026
217a7af
fix(lint): add language specifiers to bare fenced code blocks
flyingrobots Apr 2, 2026
471cda6
fix: correct stale JSDoc import path in ComparisonController
flyingrobots Apr 2, 2026
cd41f99
fix: deduplicate JSDoc import paths to work around Deno AST panic
flyingrobots Apr 2, 2026
61defa4
fix: deduplicate inline JSDoc import() paths for Deno AST compatibility
flyingrobots Apr 2, 2026
9546707
fix: use @import JSDoc tag to fix Deno AST panic on JSR publish
flyingrobots Apr 2, 2026
b4dd4be
refactor(NDNM): promote WarpStateV5 from typedef to class
flyingrobots Apr 2, 2026
07e4339
fix: resolve TSC conflicts from WarpStateV5 class promotion
flyingrobots Apr 2, 2026
ce9d075
fix: normalize stale JSDoc import paths in QueryController
flyingrobots Apr 2, 2026
82ff74b
chore: inbox 4 backlog items from METHOD v2 draft review
flyingrobots Apr 2, 2026
e65c76b
refactor(NDNM): promote Dot, EventId, EffectEmission, DeliveryObserva…
flyingrobots Apr 2, 2026
1ae6826
fix: restore alphabetical field order for CBOR compatibility
flyingrobots Apr 2, 2026
17e14a3
chore: move CBOR codec fix to ASAP, remove completed WarpStateV5 item
flyingrobots Apr 2, 2026
b591bd7
refactor(NDNM): promote TickReceipt and PatchDiff to classes
flyingrobots Apr 2, 2026
2c1dc32
fix: CBOR codec now sorts class instance keys for canonical encoding
flyingrobots Apr 2, 2026
2e47de9
refactor(NDNM): promote LWWRegister and BTR to classes
flyingrobots Apr 3, 2026
bab1d0c
refactor(NDNM): promote TrustState to class, keep TrustRecord as typedef
flyingrobots Apr 3, 2026
8e961e5
chore: update TrustRecord backlog item with promotion notes
flyingrobots Apr 3, 2026
a215aa3
chore: upgrade TrustRecord backlog item — root cause is Record<string…
flyingrobots Apr 3, 2026
1734664
chore: update CHANGELOG, promote 3 backlog items to ASAP
flyingrobots Apr 3, 2026
0662e68
fix: address self-code-review findings (7 of 12 resolved)
flyingrobots Apr 3, 2026
110c7a6
chore: log 2 deferred nits as backlog items
flyingrobots Apr 3, 2026
23fbacb
fix: address CodeRabbit review feedback — all findings resolved
flyingrobots Apr 3, 2026
fa5421c
refactor(NDNM): selector subclasses, OpOutcome subclasses, ResolvedCo…
flyingrobots Apr 3, 2026
fe34c3b
docs: update CHANGELOG with selector hierarchy, OpOutcome subclasses,…
flyingrobots Apr 3, 2026
742c001
docs: add Systems-Style JavaScript manifesto
flyingrobots Apr 3, 2026
83fa6dc
docs: System-Style JavaScript — the real manifesto
flyingrobots Apr 3, 2026
9b35171
docs: System-Style JavaScript — final draft
flyingrobots Apr 3, 2026
dd63b5b
fix: repair CONTRIBUTING.md link path and manifesto code sample syntax
flyingrobots Apr 3, 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
179 changes: 49 additions & 130 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,162 +2,81 @@

## Planning Sources Of Truth

Do not duplicate the repo's "active plan" inside `CONTRIBUTING.md`.
That information drifts too easily here.
- `docs/method/backlog/` — lane-organized backlog (inbox/, asap/, up-next/, cool-ideas/, bad-code/)
- `docs/design/<NNNN-slug>/` — active cycle work; backlog item promotes here
- `CHANGELOG.md` — what has landed
- `docs/method/retro/<NNNN-slug>/` — closed cycle retrospectives

Instead, use these sources:
No milestones. No ROADMAP. Cycles are the unit of work.
See [METHOD.md](../METHOD.md) for the full process.

- `BACKLOG/README.md` for the currently active cycle and promotable pre-design
slices
- `docs/ROADMAP.md` for committed release and milestone inventory
- `CHANGELOG.md` for what has already landed on the branch or in released
versions
- `docs/design/` for the governing design notes promoted from active backlog
items
## Cycle Process

If these artifacts disagree, reconcile them as part of the cycle close instead
of letting `CONTRIBUTING.md` become a second planning registry.
A cycle is one backlog item, start to finish:

## Development Loop
1. **Pull** — promote a backlog item to `docs/design/<NNNN-slug>/`
2. **Design** — write the design doc; add hills, playback questions, non-goals
3. **Spec** — write failing tests as executable spec
4. **Implement** — make the tests pass
5. **Close** — retrospective, drift audit, CHANGELOG, tech debt journal,
cool ideas

This repo follows the same disciplined cycle used by higher-layer products built
on git-warp:
### Retrospectives

1. design docs first
2. tests as executable spec second
3. implementation third
4. playback, retrospective, and reconciliation after the slice lands
Every closed cycle gets a retrospective in `docs/method/retro/<NNNN-slug>/`.
At minimum:

Tests are the spec. Design docs define intent and invariants. Implementation
follows.
1. Governing design docs and backlog IDs
2. What actually landed
3. Design Alignment Audit — label each point as `aligned`, `partially aligned`,
or `not aligned`
4. Observed drift — classify as deliberate tradeoff, implementation shortcut,
hidden constraint, test gap, or design ambiguity
5. Resolution — update design docs, add follow-on backlog item, or fix
immediately

When a `BACKLOG/` item is selected for active work, promote it into
`docs/design/` before writing tests.

For non-trivial work, use IBM Design Thinking style framing:

- sponsor actors
- hills
- playbacks
- explicit non-goals

Keep that vocabulary in the design method. Do not leak it into the runtime
ontology unless the substrate truly needs a first-class concept.

## Retrospectives

Retrospectives are not optional cleanup. Every closed slice should leave behind
an explicit retrospective, and that retrospective must audit the landed changes
against the intended design.

At minimum, every retrospective should include:

1. governing design docs and backlog IDs
2. what actually landed
3. a `Design Alignment Audit` section
4. any observed drift
5. whether the drift is accepted, rejected, or deferred

The `Design Alignment Audit` should check the implemented slice against the
intended invariants and label each major point as:

- `aligned`
- `partially aligned`
- `not aligned`

If implementation drift occurred, the retrospective must say why:

- deliberate tradeoff
- implementation shortcut
- hidden pre-existing constraint
- test gap
- design ambiguity

And it must say how the repo resolves that drift:

- update the design docs
- add a follow-on `BACKLOG/` item
- immediately fix the implementation in the next slice

Do not treat a passing test suite as proof that the design was honored. The
retro is where we verify that the code matches the intended architecture, not
just the executable spec that happened to be written.

## Checkpoints

Most slices should pass through four checkpoints:

1. doctrine
2. spec
3. semantic
4. surface

For git-warp, "surface" often means public API, CLI, or documentation surface
rather than a GUI.

Local red while iterating is acceptable. Shared branches, pushes intended for
review, and merge submissions should be green.
Do not treat a passing test suite as proof that the design was honored.

## Getting Started

1. Clone the repository
2. Install dependencies: `npm install`
3. Set up git hooks: `npm run setup:hooks`
4. Run tests: `npm test`
```bash
git clone git@github.com:git-stunts/git-warp.git
cd git-warp
npm install # installs deps, sets up git hooks
npm run test:local # run unit tests
```

## Git Hooks

This project uses custom git hooks located in `scripts/hooks/`. Run `npm run setup:hooks` to enable them.
- Hooks are also auto-configured on `npm install` (no-op if not a git repo).
- `pre-commit` runs eslint on staged JS files.
- `pre-push` runs `npm run lint`, `npm test`, `npm run benchmark`, and the Docker bats CLI suite (`git-warp` commands).
Custom hooks in `scripts/hooks/`, auto-configured on `npm install`.

### Pre-commit Hook

The pre-commit hook runs ESLint on all staged JavaScript files. If linting fails, the commit is blocked.

To fix lint errors:
```bash
npx eslint --fix <files>
```

To bypass temporarily (use sparingly):
```bash
git commit --no-verify
```
- **pre-commit** — ESLint on staged JS files
- **pre-push** — 8-gate IRONCLAD firewall (tsc, policy, consumer types,
ESLint, ratchet, surface, markdown, tests)

## Code Style

- ESLint enforces code style. Run `npx eslint .` to check.
- Use template literals instead of string concatenation
- Always use curly braces for if/else blocks
- Keep functions focused and avoid deep nesting
- ESLint enforces style. Run `npx eslint .` to check.
- Template literals over concatenation
- Always use curly braces for if/else
- Keep functions focused, avoid deep nesting

## Running Tests

```bash
npm test # Run all unit tests (Docker)
npm run test:local # Run unit tests without Docker
npm test -- <pattern> # Run specific tests

# Multi-runtime test matrix (Docker)
npm run test:node22 # Node 22: unit + integration + BATS CLI
npm run test:bun # Bun: API integration tests
npm run test:deno # Deno: API integration tests
npm run test:matrix # All runtimes in parallel
npm run test:local # Unit tests without Docker
npm test # Unit tests (Docker)
npm run test:matrix # Full multi-runtime matrix (Docker)
```

### No-Coordination Invariant

The no-coordination regression suite is non-negotiable for multi-writer safety.
Ensure `test/unit/domain/WarpGraph.noCoordination.test.js` passes before submitting changes.
`test/unit/domain/WarpGraph.noCoordination.test.js` is non-negotiable for
multi-writer safety. Must pass before any PR.

## Pull Requests

1. Create a feature branch from `main`
2. Make your changes with clear commit messages
3. Keep commits documentation-atomic: when a change affects shipped behavior, public surface, or backlog status, update `CHANGELOG.md` and the roadmap/backlog docs in the same commit.
4. When a `BACKLOG/` item becomes active, promote it into `docs/design/` before implementation. When roadmap work completes, reconcile `docs/ROADMAP.md` and `docs/ROADMAP/COMPLETED.md` in the same commit.
5. Ensure all tests pass: `npm test`
6. Ensure linting passes: `npx eslint .`
7. Submit a PR with a clear description
1. Branch from the latest green branch
2. Clear commit messages; docs-atomic (CHANGELOG + code in same commit)
3. All tests pass, all lint gates pass
4. Submit PR with clear description
4 changes: 2 additions & 2 deletions .github/maintainers/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ evaluating or using the product API.

## Related project artifacts

- [Backlog](../../BACKLOG/README.md)
Active and promoted work tracked as repo-operating artifacts.
- [Backlog](../../docs/method/backlog/)
Lane-organized backlog items with legend prefixes.
- [Design notes](../../docs/design/)
Governing design docs for promoted backlog items and active cycles.
- [Retrospectives](../../docs/archive/retrospectives/)
Expand Down
38 changes: 0 additions & 38 deletions BACKLOG/OG-001-worldline-api.md

This file was deleted.

32 changes: 0 additions & 32 deletions BACKLOG/OG-002-warpgraph-role-split.md

This file was deleted.

41 changes: 0 additions & 41 deletions BACKLOG/OG-003-snapshot-immutability.md

This file was deleted.

34 changes: 0 additions & 34 deletions BACKLOG/OG-004-observer-seek-contract.md

This file was deleted.

24 changes: 0 additions & 24 deletions BACKLOG/OG-005-detached-read-benchmarks.md

This file was deleted.

Loading
Loading