Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
49 changes: 49 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
---
name: bug report
about: report a defect in the nest format, runtime, cli, or python bindings
title: ''
labels: bug
assignees: ''
---

<!-- title in plain english, no Conventional Commits prefix. body explains what is broken and why it matters. -->

## summary

<!-- 1-3 sentences: what is broken. -->

## reproduction

<!-- minimal repro. paste the exact command, code, or .nest path. include input and any relevant flags. -->

```
$ nest <command> ...
```

## expected vs actual

<!-- what should happen, then what actually happens. paste the actual error or output verbatim. -->

- expected:
- actual:

## environment

- nest version / commit:
- os + arch:
- rust toolchain (`rustc --version`):
- python (`python3 --version`):
- embedding model (if relevant):

## scope

- [ ] binary format / hash semantics
- [ ] runtime / search contract
- [ ] cli
- [ ] python bindings
- [ ] build / release tooling
- [ ] docs only

## additional context

<!-- logs, related issues, prior ADRs, anything else. n/a if none. -->
40 changes: 40 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
---
name: feature request
about: propose a change to nest format, runtime, cli, python bindings, or docs
title: ''
labels: enhancement
assignees: ''
---

<!-- title in plain english, no Conventional Commits prefix. body explains the why; a future pr will show the what. -->

## summary

<!-- 1-3 sentences: what you want and the problem it solves. -->

## scope

- [ ] binary format / hash semantics
- [ ] runtime / search contract
- [ ] cli
- [ ] python bindings
- [ ] build / release tooling
- [ ] docs only

## proposal

<!-- the shape of the change. api surface, cli flag, format field, etc. concrete is better than abstract. -->

## alternatives

<!-- what else you considered and why it falls short. n/a if none. -->

## format / runtime impact

<!-- if this touches binary layout, search contract, hash semantics, or model fingerprint, an ADR will be required under kdb/adr/. otherwise: n/a. -->

n/a

## additional context

<!-- linked issues, prior PRs, ADRs, references. n/a if none. -->
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
*.so
*.dylib
*.dll

kdb/
adr/
# Python
__pycache__/
*.py[cod]
Expand Down
3 changes: 1 addition & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,8 +116,7 @@ these are documented honest limitations of the current code, not bugs to silentl
- `doc/architecture.md`: binary layout, API surface, errors, versioning, four hashes, SIMD dispatcher, search contract.
- `doc/usage.md`: 10-section how-to for the 8 commands, presets, offline mode, citations.
- `doc/changelog.md`: v0.1.0 and v0.2.0 deltas.
- `doc/spec.md`: byte-by-byte format spec, the canonical reference for any external implementer.
- `kdb/adr/`: 11 architectural decision records (0001 through 0011). every irreversible decision lives here.
- `kdb/adr/`: architectural decisions records every product/feature/business irreversible decision lives here.
- `database/README.md`: what each upstream PT-BR dataset is and how to rebuild the unified corpus.
- `CONTRIBUTING.md`: external contributor flow.
- `CODE_OF_CONDUCT.md`: contributor covenant 2.1, lowercase plain-style.
Expand Down
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ repository = "https://github.com/hoffresearch/nest"
thiserror = "2"
serde = { version = "1", features = ["derive"] }
serde_json = { version = "1", features = ["preserve_order"] }
sha2 = "0.10"
sha2 = "0.11"
memmap2 = "0.9"
rayon = "1"
clap = { version = "4", features = ["derive"] }
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -145,12 +145,12 @@ with `reproducible=True` (the script default) two operators get byte-identical `
- `database/README.md` for what each upstream dataset is and how to rebuild the corpus
- `doc/architecture.md` for binary layout, API surface, errors, versioning
- `doc/usage.md` for the eight commands, presets, offline mode, citations
- `doc/spec.md` for the byte-by-byte format
- `kdb/adr/` for architectural decision records (0001 through 0011)
- `doc/changelog.md` for v0.1 to v0.2 deltas

## license

Made it simple, but signifcant. Brenner Cruvinel.
made it simple, but signifcant.
Brenner Cruvinel.

MIT.
2 changes: 1 addition & 1 deletion crates/nest-cli/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,5 @@ anyhow = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
memmap2 = { workspace = true }
rand = "0.9"
rand = "0.10"
hex = "0.4"
2 changes: 1 addition & 1 deletion crates/nest-format/src/chunk.rs
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ pub fn chunk_id(
h.update(byte_end.to_le_bytes());
write_lp(&mut h, chunker_version.as_bytes());
let digest = h.finalize();
format!("sha256:{:x}", digest)
format!("sha256:{}", hex::encode(digest))
}

fn write_lp(h: &mut Sha256, bytes: &[u8]) {
Expand Down
4 changes: 2 additions & 2 deletions crates/nest-format/src/reader/decode.rs
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ impl<'a> NestView<'a> {
pub fn file_hash_hex(&self) -> String {
use sha2::{Digest, Sha256};
let h = Sha256::digest(self.data);
format!("sha256:{:x}", h)
format!("sha256:{}", hex::encode(h))
}

/// `sha256:<hex>` of the canonical sections in the order fixed by spec
Expand All @@ -62,6 +62,6 @@ impl<'a> NestView<'a> {
h.update((bytes.len() as u64).to_le_bytes());
h.update(bytes.as_ref());
}
Ok(format!("sha256:{:x}", h.finalize()))
Ok(format!("sha256:{}", hex::encode(h.finalize())))
}
}