Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
177 commits
Select commit Hold shift + click to select a range
8ce8883
test(acquisition): define fail-closed data-room integrity boundary
seonghobae Aug 6, 2026
4ad83d5
feat(acquisition): recompute bounded data-room evidence integrity
seonghobae Aug 6, 2026
75d8545
feat(acquisition): bind generated manifests to exact source evidence
seonghobae Aug 6, 2026
91c7a02
feat(acquisition): add fail-closed manifest integrity pre-gate
seonghobae Aug 6, 2026
582ae63
refactor(acquisition): route manifest generation through integrity po…
seonghobae Aug 6, 2026
6d53b07
feat(acquisition): require manifest integrity before readiness audit
seonghobae Aug 6, 2026
1f0455e
fix(release): verify generated acquisition evidence integrity
seonghobae Aug 6, 2026
6025af7
docs(acquisition): define authenticated buyer data-room boundary
seonghobae Aug 6, 2026
8d91395
docs(doctoring): ground acquisition evidence integrity in current sta…
seonghobae Aug 6, 2026
ad80bc6
docs(acquisition): make manifest integrity explicit to buyers
seonghobae Aug 6, 2026
6504620
test(acquisition): exercise forged npm gate and evidence substitutions
seonghobae Aug 6, 2026
65302b0
test(acquisition): enforce 100% integrity-module coverage
seonghobae Aug 6, 2026
25ac96d
docs(changelog): record fail-closed acquisition manifest integrity
seonghobae Aug 6, 2026
3a6a8e5
test(acquisition): pin external evidence to reviewed retained path
seonghobae Aug 6, 2026
195b394
fix(acquisition): pin external retained artifact paths
seonghobae Aug 6, 2026
0eb48bd
test(acquisition): bind external evidence fixtures to reviewed paths
seonghobae Aug 6, 2026
89505ca
test(acquisition): cover reviewed external artifact path policy
seonghobae Aug 6, 2026
923fe5b
docs(acquisition): document catalog-pinned external artifacts
seonghobae Aug 6, 2026
2836f59
docs(acquisition): index pinned FigJam export evidence
seonghobae Aug 6, 2026
e76d51a
docs(doctoring): bind external evidence identity to reviewed paths
seonghobae Aug 6, 2026
9abe3be
test(acquisition): keep unsafe catalog fixture type-safe
seonghobae Aug 6, 2026
77f7994
test(acquisition): refuse dirty tracked exact-head evidence
seonghobae Aug 6, 2026
f30c94e
feat(acquisition): authenticate tracked checkout before evidence use
seonghobae Aug 6, 2026
279ba50
fix(acquisition): preflight exact tracked source before manifest load
seonghobae Aug 6, 2026
217c390
fix(acquisition): preflight exact tracked source before integrity audit
seonghobae Aug 6, 2026
8993aa2
test(acquisition): cover isolated exact-Git preflight policy
seonghobae Aug 6, 2026
0756d39
test(acquisition): enforce 100% Git preflight coverage
seonghobae Aug 6, 2026
5a1baac
docs(acquisition): define exact tracked-checkout trust root
seonghobae Aug 6, 2026
110f2db
docs(doctoring): record exact-checkout preflight trust root
seonghobae Aug 6, 2026
87f8e2e
test(acquisition): close Git preflight environment branches
seonghobae Aug 6, 2026
17b1987
docs(changelog): record exact tracked-checkout acquisition preflight
seonghobae Aug 6, 2026
19d45a2
test(acquisition): expose index-flag hidden tracked drift
seonghobae Aug 6, 2026
ed16763
fix(acquisition): reject hidden index-state drift
seonghobae Aug 6, 2026
212c391
test(acquisition): cover bounded index-hint refusal
seonghobae Aug 6, 2026
780b9a3
docs(acquisition): document unsafe Git index-hint refusal
seonghobae Aug 6, 2026
dab40d8
docs(doctoring): ground index-hint refusal in Git semantics
seonghobae Aug 6, 2026
7832a74
docs(changelog): record unsafe Git index-hint refusal
seonghobae Aug 6, 2026
5f13030
test(acquisition): add review regression coverage
seonghobae Aug 6, 2026
a3e82b7
fix(acquisition): fail closed on catalog and empty-file edge cases
seonghobae Aug 6, 2026
b5468d2
fix(acquisition): admit exact CI checkout as safe directory
seonghobae Aug 6, 2026
da159ce
test(acquisition): fix empty-evidence fixture setup
seonghobae Aug 6, 2026
299549d
fix(acquisition): enforce private manifest permissions
seonghobae Aug 6, 2026
b0e50f2
fix(acquisition): enforce private audit permissions
seonghobae Aug 6, 2026
2baabd6
test(acquisition): cover remaining integrity and path regressions
seonghobae Aug 6, 2026
0a02464
fix(acquisition): bind default manifest path to exact head
seonghobae Aug 6, 2026
f7ba213
fix(acquisition): bind integrity audit to shared exact-head path
seonghobae Aug 6, 2026
ef108d9
test(acquisition): make integrity entrypoint test portable
seonghobae Aug 6, 2026
e84802d
test(acquisition): isolate clean-checkout default coverage
seonghobae Aug 6, 2026
ce5f8b8
test(acquisition): isolate Git-binding fixture environment
seonghobae Aug 6, 2026
9e6ff1b
docs(doctoring): correct evidence-integrity standards and path binding
seonghobae Aug 6, 2026
a1e1783
refactor(acquisition): remove unreachable path-normalization branch
seonghobae Aug 6, 2026
18f08ed
docs(acquisition): document exact-head data-room hardening
seonghobae Aug 6, 2026
6b42ee7
docs(acquisition): bind buyer data-room path to exact head
seonghobae Aug 6, 2026
c815c69
fix(acquisition): preserve manifest compatibility contract markers
seonghobae Aug 6, 2026
8f74e7a
test(acquisition): close integrity branch coverage gaps
seonghobae Aug 6, 2026
c6d46cc
test(acquisition): cover fail-closed integrity branches
seonghobae Aug 7, 2026
30ac811
test(acquisition): close remaining branch coverage gaps
seonghobae Aug 7, 2026
e7fc2d1
test(acquisition): fail closed on Git status probe errors
seonghobae Aug 7, 2026
eaf7120
test(acquisition): assert audit exit contracts
seonghobae Aug 7, 2026
5e84f60
test(acquisition): reject symlink output targets
seonghobae Aug 7, 2026
cd749f1
fix(acquisition): add no-follow private output writer
seonghobae Aug 7, 2026
387056f
fix(acquisition): refuse unsafe manifest output targets
seonghobae Aug 7, 2026
3d17eb9
fix(acquisition): refuse unsafe audit output targets
seonghobae Aug 7, 2026
bb2ab1a
test(acquisition): cover private output trust boundary
seonghobae Aug 7, 2026
9815b6f
test(acquisition): enforce private output coverage
seonghobae Aug 7, 2026
dba2365
docs(acquisition): document no-follow output boundary
seonghobae Aug 7, 2026
77acf18
docs(doctoring): justify no-follow evidence outputs
seonghobae Aug 7, 2026
7a76f63
docs(doctoring): keep repository citations portable
seonghobae Aug 7, 2026
7af1ee5
docs(changelog): record safe acquisition output writes
seonghobae Aug 7, 2026
b5fc412
test(acquisition): expose local worktree redirection
seonghobae Aug 7, 2026
9ed61f1
fix(acquisition): bind Git preflight worktree
seonghobae Aug 7, 2026
e6855c5
docs(acquisition): bind audited Git worktree
seonghobae Aug 7, 2026
721d60b
docs(changelog): record Git worktree binding
seonghobae Aug 7, 2026
5c656a5
docs(doctoring): justify Git worktree binding
seonghobae Aug 7, 2026
e7675ef
test(acquisition): expose clean-filter trust bypass
seonghobae Aug 7, 2026
df7498b
fix(acquisition): isolate tracked comparisons from filters
seonghobae Aug 7, 2026
4b2e7bb
test(acquisition): cover split tracked comparisons
seonghobae Aug 7, 2026
397ee32
test(acquisition): reproduce parent symlink output escape
seonghobae Aug 7, 2026
53799ea
docs(acquisition): isolate source checks from clean filters
seonghobae Aug 7, 2026
eb231f4
test(acquisition): cover parent symlink entrypoint escapes
seonghobae Aug 7, 2026
b6658e6
fix(acquisition): reject symbolic-link output parents
seonghobae Aug 7, 2026
26fae39
fix(acquisition): validate manifest output parents before mkdir
seonghobae Aug 7, 2026
ed1eeeb
fix(acquisition): validate audit output parents before mkdir
seonghobae Aug 7, 2026
df1b873
test(acquisition): cover parent-chain validation branches
seonghobae Aug 7, 2026
cac170d
docs(doctoring): localize acquisition worktree binding
seonghobae Aug 7, 2026
26994d2
docs(acquisition): document parent symlink output boundary
seonghobae Aug 7, 2026
e0cb239
docs(doctoring): record output parent path integrity rationale
seonghobae Aug 7, 2026
65eac8d
docs(changelog): record parent symlink output hardening
seonghobae Aug 7, 2026
869a72c
test(acquisition): require permission hardening before content mutation
seonghobae Aug 7, 2026
4b33e1d
fix(acquisition): harden output permissions before content mutation
seonghobae Aug 7, 2026
7c92c05
test(acquisition): preserve content when permission hardening fails
seonghobae Aug 7, 2026
1bfc200
docs(acquisition): harden permissions before output mutation
seonghobae Aug 7, 2026
4bbfe1d
docs(doctoring): bind output mutation to prior permission hardening
seonghobae Aug 7, 2026
fcfcd3f
docs(changelog): record permission-before-mutation output hardening
seonghobae Aug 7, 2026
07e8e91
test(ci): require exact live pull-request head verification
seonghobae Aug 7, 2026
1a663f1
fix(ci): verify the exact live pull-request head
seonghobae Aug 7, 2026
37bbe30
fix(ci): bind reviewer verification to the live PR head
seonghobae Aug 7, 2026
b59a020
docs(ci): define exact-head pull-request verification
seonghobae Aug 7, 2026
491044d
docs(doctoring): justify exact-head CI binding
seonghobae Aug 7, 2026
a750d38
docs(changelog): record exact-head CI binding
seonghobae Aug 7, 2026
1b9f0ec
test(ci): keep PR metadata token out of untrusted test steps
seonghobae Aug 7, 2026
8e2aeb9
fix(ci): scope PR metadata token to stale-head checks
seonghobae Aug 7, 2026
0e323d2
fix(ci): isolate PR metadata token from reviewer execution
seonghobae Aug 7, 2026
a1228ba
docs(ci): keep metadata token out of PR-controlled execution
seonghobae Aug 7, 2026
f58fa99
docs(doctoring): scope metadata token away from PR code
seonghobae Aug 7, 2026
a71c206
test(acquisition): expose repository stat-cache drift bypass
seonghobae Aug 7, 2026
57a1dd8
fix(acquisition): override Git stat-cache trust settings
seonghobae Aug 7, 2026
8b8134b
test(acquisition): require raw tracked-byte authentication
seonghobae Aug 7, 2026
8cab30f
test(acquisition): require strict Git stat policy
seonghobae Aug 7, 2026
bd46741
fix(acquisition): authenticate raw tracked Git blob bytes
seonghobae Aug 7, 2026
834b4ba
test(acquisition): cover tracked-byte index refusal paths
seonghobae Aug 7, 2026
38b59e4
test(acquisition): cover raw tracked-byte verifier
seonghobae Aug 7, 2026
52ec38b
test(acquisition): cover tracked-object hashing failures
seonghobae Aug 7, 2026
89c168f
test(acquisition): enforce byte budget before hashing
seonghobae Aug 7, 2026
5d87c73
fix(acquisition): enforce byte budgets before blob hashing
seonghobae Aug 7, 2026
52cb39b
docs(acquisition): document raw tracked-byte authentication
seonghobae Aug 7, 2026
8dd6c89
docs(doctoring): justify raw Git content authentication
seonghobae Aug 7, 2026
788d79d
test(acquisition): require descriptor-bound raw byte verification
seonghobae Aug 7, 2026
38957d5
fix(acquisition): bind raw Git hashing to no-follow descriptors
seonghobae Aug 7, 2026
29d0a88
test(acquisition): consolidate descriptor-bound blob coverage
seonghobae Aug 7, 2026
5af3fc2
test(acquisition): fold byte budgets into descriptor tests
seonghobae Aug 7, 2026
cde92c5
test(acquisition): consolidate descriptor-bound content coverage
seonghobae Aug 7, 2026
f732327
test(acquisition): reach invalid executable-mode metadata branch
seonghobae Aug 7, 2026
69f2e27
docs(acquisition): align raw-byte authentication with descriptors
seonghobae Aug 7, 2026
38aa07f
docs(doctoring): bind Git content evidence to descriptors
seonghobae Aug 7, 2026
a8f8033
test(acquisition): cover empty path and malformed index header
seonghobae Aug 7, 2026
4148919
docs(changelog): record descriptor-bound Git byte authentication
seonghobae Aug 7, 2026
c0de3ab
test: reject index rewrite against exact acquisition tree
seonghobae Aug 7, 2026
56d8a8c
fix: bind acquisition raw-byte inventory to exact HEAD tree
seonghobae Aug 7, 2026
9c6e593
docs: bind acquisition bytes to immutable exact tree
seonghobae Aug 7, 2026
fe3a12e
docs: doctor immutable exact-tree acquisition authority
seonghobae Aug 7, 2026
e7581cf
test: cover clean and malformed exact-tree identities
seonghobae Aug 7, 2026
6ec5a2c
test: align tracked-source failure contract
seonghobae Aug 7, 2026
55f360f
test: require exact tree for production byte authentication
seonghobae Aug 7, 2026
5c58dae
fix: require immutable tree identity for production byte reads
seonghobae Aug 7, 2026
11cae5b
test: bind racy Git regression to immutable exact tree
seonghobae Aug 7, 2026
b630fbf
test(acquisition): bind changelog to exact-tree authority
seonghobae Aug 7, 2026
3a4500d
docs(acquisition): correct exact-tree byte authority
seonghobae Aug 7, 2026
2077f78
test(docs): require integrity in buyer release gate
seonghobae Aug 7, 2026
bf41d7d
docs(acquisition): include integrity in release gate
seonghobae Aug 7, 2026
9400b2c
test(acquisition): reject unbound transfer rights evidence
seonghobae Aug 9, 2026
478b1b8
fix(acquisition): bind transfer pass to licensing and IP evidence
seonghobae Aug 9, 2026
9355e50
docs(acquisition): define transfer rights evidence schema
seonghobae Aug 9, 2026
eff3a08
test(acquisition): prove transfer rights binding green path
seonghobae Aug 9, 2026
83d77cf
test(acquisition): isolate audit rights fixtures from repository state
seonghobae Aug 9, 2026
5be57fb
test(acquisition): require exact release artifact digest binding
seonghobae Aug 9, 2026
44c7f32
fix(acquisition): authenticate exact release artifact digests
seonghobae Aug 9, 2026
58d75e3
test(acquisition): retain exact release fixture artifacts
seonghobae Aug 9, 2026
4e4c894
test(security): reject symlinked acquisition rights evidence
seonghobae Aug 9, 2026
390f483
fix(security): bind acquisition reads to real repository paths
seonghobae Aug 9, 2026
3e9ff42
test(acquisition): isolate transfer audit environment
seonghobae Aug 9, 2026
5a75250
test(acquisition): isolate readiness audit environment
seonghobae Aug 9, 2026
01e7a7c
test(acquisition): require exact artifact rights metadata
seonghobae Aug 10, 2026
ebd0ea2
fix(acquisition): authenticate release artifact rights metadata
seonghobae Aug 10, 2026
0b61f2f
test(acquisition): add passing artifact rights receipt
seonghobae Aug 10, 2026
497e400
docs(acquisition): require artifact rights receipt binding
seonghobae Aug 10, 2026
b4a9009
docs(acquisition): add artifact rights metadata template
seonghobae Aug 10, 2026
f62a9ac
test(acquisition): cover approved OCI SPDX rights
seonghobae Aug 10, 2026
cfd3e4e
docs(acquisition): index exact artifact rights evidence
seonghobae Aug 10, 2026
86df271
test(acquisition): reject duplicate artifact-rights keys
seonghobae Aug 10, 2026
3acadd1
fix(acquisition): reject ambiguous artifact-rights JSON
seonghobae Aug 10, 2026
4ff607b
test(acquisition): reject duplicate top-level evidence keys
seonghobae Aug 10, 2026
0689fa6
fix(acquisition): reject duplicate top-level JSON evidence
seonghobae Aug 10, 2026
d21af72
merge: reconstruct acquisition data-room integrity on current main
seonghobae Aug 16, 2026
b16fc32
test(acquisition): restore transfer-rights RED contract
seonghobae Aug 16, 2026
af590da
fix(acquisition): bind transfer readiness to retained licensing evidence
seonghobae Aug 16, 2026
7157723
test(acquisition): preserve strict JSON evidence boundaries
seonghobae Aug 16, 2026
afa4741
test(acquisition): restore end-to-end readiness regressions
seonghobae Aug 16, 2026
3dc2a31
docs(acquisition): restore placeholder-safe rights evidence templates
seonghobae Aug 16, 2026
4a4f08f
test(acquisition): retain resolved review regressions
seonghobae Aug 16, 2026
732295b
merge(main): refresh acquisition integrity onto current protected base
seonghobae Aug 16, 2026
91513f0
fix(stack): preserve protected #400 security contract
seonghobae Aug 16, 2026
88a374e
test(acquisition): reject symlinked top-level evidence
seonghobae Aug 16, 2026
09fb39a
fix(acquisition): read top-level JSON evidence fail-closed
seonghobae Aug 16, 2026
820711b
test(acquisition): align unsafe-object evidence classification
seonghobae Aug 16, 2026
a5f7000
test(acquisition): bound full entrypoint integration time
seonghobae Aug 16, 2026
9050194
test(acquisition): bound multi-entrypoint integration time
seonghobae Aug 16, 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
146 changes: 146 additions & 0 deletions docs/acquisition-data-room-integrity.md

Large diffs are not rendered by default.

94 changes: 94 additions & 0 deletions docs/acquisition-git-content-authentication.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
# Acquisition Git Content Authentication

Noema의 buyer data-room 검증은 `git diff-files`가 clean이라고 보고한 사실만으로 tracked checkout의 실제 bytes가 exact commit과 같다고 승인하지 않는다. Git index는 성능을 위해 파일의 cached stat metadata를 저장하며, timestamp와 size 조건에 따라 내용이 바뀌어도 stat tuple이 같아 보이는 “racily clean” 상태가 발생할 수 있다. 또한 index 자체는 mutable state이므로 raw-byte authority의 expected blob identity도 index에서 가져오지 않는다.

## Required verification sequence

Acquisition manifest 생성과 integrity audit는 다음 검사를 모두 통과해야 한다.

1. exact `HEAD^{commit}`을 local object database에서 40자리 SHA로 해석한다.
2. `skip-worktree`와 `assume-unchanged` index hint를 bounded NUL-delimited inspection으로 거부한다.
3. staged index가 exact HEAD와 같은지 `git diff --cached`로 확인한다.
4. ordinary worktree drift를 `git diff-files`로 확인한다. 이 단계는 빠른 defense in depth이며 최종 byte authority가 아니다.
5. 이미 인증한 exact HEAD를 `git ls-tree -r --full-tree -z`로 읽어 immutable commit-tree의 mode, object ID, path inventory를 만든다. 출력은 parser가 요구하는 bounded NUL-delimited mode/object/stage-shaped record로 formatting하며 mutable index object ID를 authority로 사용하지 않는다.
6. exact-tree의 `100644` 또는 `100755` regular-file entry만 허용한다. Symlink, gitlink, sparse-directory mode 등 지원하지 않는 object mode는 fail-closed다.
7. 각 path를 `lstat`한 뒤 `O_RDONLY | O_NOFOLLOW` descriptor로 열고, path와 descriptor의 device, inode, mode, size, modification time, change time이 일치해야 한다.
8. exact-tree executable mode와 descriptor의 owner-execute bit를 독립적으로 비교한다.
9. descriptor size를 기준으로 `size + 1` bounded buffer를 할당하고 descriptor에서 직접 읽는다. Short read, growth 또는 invalid read count를 거부한다.
10. read 후 descriptor와 path identity를 다시 비교한다.
11. descriptor에서 읽은 exact bytes를 `git hash-object --stdin`으로 계산하고 exact HEAD tree object ID와 정확히 비교한다.
12. index hint와 exact HEAD를 다시 확인한다.

이 순서는 staged-index 비교가 끝난 직후 다른 local writer가 index를 다시 써도 raw-byte authority가 새 index object ID로 바뀌지 않게 한다. Expected blob identity는 처음 고정한 exact HEAD commit tree에서만 파생된다. Pathname을 두 번째로 다시 열어 hash하지 않으므로 검증 전 path와 hash 대상 사이의 교체 경로도 줄인다. Tracked symbolic link는 현재 descriptor-bound link-target read가 제공되지 않으므로 허용 가능한 source mode로 취급하지 않는다.

## Bounded work

Raw authentication은 다음 상한을 적용한다.

- exact-tree/index parser output: 2 MiB
- tracked entry count: 20,000
- one path: 4,096 UTF-8 bytes
- one tracked regular file: 32 MiB
- all authenticated tracked bytes: 256 MiB
- each Git subprocess: 10 seconds
- ordinary Git command output: 4 KiB

Per-file 및 aggregate byte budget은 해당 descriptor read와 blob hash를 시작하기 전에 확인된다. 따라서 oversized checkout을 읽은 뒤 뒤늦게 거부하지 않는다.

## Why exact-tree descriptor-bound stdin hashing is used

Acquisition source identity는 checkout의 실제 bytes를 특정 immutable commit에 결박해야 한다. `.gitattributes`의 clean filter, end-of-line conversion, pathname 재해석, repository-local helper뿐 아니라 cached stat 또는 concurrently rewritten index도 current filesystem bytes의 expected identity를 대신할 수 없다.

Noema는 먼저 고정된 commit의 tree object IDs를 `git ls-tree`로 읽고, `O_NOFOLLOW` descriptor로 인증한 regular file bytes만 읽어 그 buffer를 `git hash-object --stdin`에 전달한다. Git은 standard input을 blob contents로 hash하므로 pathname filter나 두 번째 path open에 의존하지 않는다. Hash 전후 descriptor/path identity와 executable mode는 blob contents와 별도로 검증한다.

## Failure policy

다음은 모두 fail-closed evidence-integrity failure다.

- invalid UTF-8 또는 path traversal
- unsupported object mode, symlink, gitlink, sparse directory
- exact-tree listing 또는 object identity mismatch
- `O_NOFOLLOW` 미지원
- path/descriptor object type 또는 identity mismatch
- executable mode mismatch
- short read, growth, invalid byte count, metadata movement
- malformed Git output 또는 hash mismatch
- per-file·aggregate·entry·path budget 초과

이 실패를 cached success, commit status, model judgement, severity downgrade, ignore rule, repair workflow 또는 self-modifying GitHub Actions로 승인 상태로 바꾸지 않는다.

## Evidence separation

이 gate의 PASS는 다음을 대신하지 않는다.

- GitHub check-run 또는 commit-status 성공
- independent reviewer `APPROVE`
- CodeRabbit, OpenCode, Noema 또는 다른 model judgement
- branch protection/ruleset enforcement
- merge-result compatibility
- release provenance, immutable publication 또는 deployment acceptance
- buyer KPI, revenue, transfer 또는 governance evidence

각 evidence plane은 exact checked SHA와 producer를 별도로 보존해야 한다.

## Operational response

`tracked checkout differs from its authenticated Git index bytes`, exact-tree mismatch 또는 descriptor-bound verification failure가 발생하면 다음 순서로 복구한다.

1. 현재 process가 보고한 source SHA를 승인하지 않는다.
2. tracked file과 index state를 신뢰된 checkout에서 복구한다.
3. 다른 writer가 branch를 이동했는지 live exact head를 다시 읽는다.
4. 새 exact checkout에서 manifest를 다시 생성한다.
5. integrity, CI, security, coverage, review, provenance gate를 모두 다시 실행한다.

## References

Git Project. (2026). *Git documentation: git-hash-object*. https://git-scm.com/docs/git-hash-object

Git Project. (2026). *Git documentation: git-ls-tree*. https://git-scm.com/docs/git-ls-tree

Git Project. (2026). *Git documentation: git-ls-files*. https://git-scm.com/docs/git-ls-files

Git Project. (2026). *Racy Git*. https://git-scm.com/docs/racy-git.html

OpenJS Foundation. (2026). *File system*. Node.js documentation. https://nodejs.org/api/fs.html
Loading
Loading