Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
374 commits
Select commit Hold shift + click to select a range
f5441e4
fix: detect Linux filesystem symlinks
therobbiedavis Jul 19, 2026
4d9ac8c
test: assert linked scan path is skipped
therobbiedavis Jul 19, 2026
4751289
fix: harden filesystem moves and root relocation
therobbiedavis Jul 20, 2026
b27a91f
test(scan): adapt m4bard attribution regressions
therobbiedavis Jul 20, 2026
3509935
fix(scan): match title metadata components in book folders
therobbiedavis Jul 20, 2026
499b32e
test(scan): harden decorated-title attribution coverage
therobbiedavis Jul 20, 2026
7c8c265
test(files): cover directory symlink aliases
therobbiedavis Jul 21, 2026
2a6fa0c
test(scan): cover trailing title boundaries
therobbiedavis Jul 21, 2026
37f05fa
fix(files): block directory path aliases
therobbiedavis Jul 21, 2026
d417c4e
fix(scan): match trailing title components
therobbiedavis Jul 21, 2026
c2ead93
chore(files): remove dead recovery assignments
therobbiedavis Jul 21, 2026
8747432
test(scan): preserve case-distinct metadata boundaries
therobbiedavis Jul 21, 2026
d8391d2
fix(scan): respect case-sensitive metadata boundaries
therobbiedavis Jul 21, 2026
fa2905f
test(import): protect owned companion destinations
therobbiedavis Jul 21, 2026
9c4aa61
fix(import): block owned audio companion paths
therobbiedavis Jul 21, 2026
c7af78b
refactor(files): parameterize ownership path type
therobbiedavis Jul 21, 2026
1dbd8c9
feat(files): check ownership for planned paths
therobbiedavis Jul 21, 2026
fd669ee
feat(files): expose planned path ownership check
therobbiedavis Jul 21, 2026
6dc14d2
fix(import): check all companion path ownership
therobbiedavis Jul 21, 2026
57948fc
test(import): exercise durable companion ownership
therobbiedavis Jul 21, 2026
e3370d9
test(import): cover legacy companion ownership
therobbiedavis Jul 21, 2026
894a85b
fix(import): wire fallback companion ownership
therobbiedavis Jul 21, 2026
fca9018
fix(import): fail closed without companion ownership
therobbiedavis Jul 21, 2026
a43570e
test(import): require companion ownership checks
therobbiedavis Jul 21, 2026
d814acc
test(import): protect download companion ownership
therobbiedavis Jul 21, 2026
37e9f66
test(import): isolate companion ownership regression
therobbiedavis Jul 21, 2026
c877686
fix(import): guard all download destinations
therobbiedavis Jul 21, 2026
bf24ab6
chore(files): make ownership call arguments explicit
therobbiedavis Jul 21, 2026
cb06420
fix(import): restore logging extension import
therobbiedavis Jul 21, 2026
efa1885
refactor(import): reuse planned ownership contract
therobbiedavis Jul 21, 2026
77def37
refactor(import): reuse download ownership contract
therobbiedavis Jul 21, 2026
f0d26c4
test(import): reuse planned ownership mock
therobbiedavis Jul 21, 2026
6753a16
refactor(files): consolidate planned ownership API
therobbiedavis Jul 21, 2026
4c3e7d3
refactor(files): make planned ownership path-generic
therobbiedavis Jul 21, 2026
ccaf350
test(filesystem): add deterministic directory creation barrier
therobbiedavis Jul 21, 2026
0040fe4
test(filesystem): reproduce parent replacement during directory creation
therobbiedavis Jul 21, 2026
ca8f5bb
test(filesystem): assert redirected creation leaves no ownership
therobbiedavis Jul 21, 2026
a5bc8e3
fix(filesystem): add handle-relative directory creation primitive
therobbiedavis Jul 21, 2026
f67d24d
fix(filesystem): create directories relative to pinned parents
therobbiedavis Jul 21, 2026
5a72028
fix(filesystem): publish ownership markers through pinned handles
therobbiedavis Jul 21, 2026
661ddab
fix(filesystem): commit directory ownership after pinned marker publi…
therobbiedavis Jul 21, 2026
e4029ff
fix(filesystem): retain pinned directory lease through ownership commit
therobbiedavis Jul 21, 2026
3de5ad8
fix(filesystem): keep marker verification on pinned handles
therobbiedavis Jul 21, 2026
d9744ae
test(filesystem): reproduce file alias false-success
therobbiedavis Jul 21, 2026
94b9ea8
fix(filesystem): classify linked regular-file aliases
therobbiedavis Jul 21, 2026
b25fff0
fix(filesystem): block linked aliases in file copy operations
therobbiedavis Jul 21, 2026
d815440
fix(filesystem): block linked aliases before file move locking
therobbiedavis Jul 21, 2026
a953ca3
fix(filesystem): revalidate file aliases after lock acquisition
therobbiedavis Jul 21, 2026
480b7fe
fix(filesystem): stop treating linked file aliases as idempotent paths
therobbiedavis Jul 21, 2026
da1f063
test(filesystem): reproduce directory fallback publication races
therobbiedavis Jul 21, 2026
40b62f5
fix(filesystem): publish exact staged directory snapshots
therobbiedavis Jul 21, 2026
f791018
test(filesystem): expose deterministic semantics probe observation
therobbiedavis Jul 21, 2026
310ae29
test(filesystem): require independent semantics probes
therobbiedavis Jul 21, 2026
4a670bc
fix(filesystem): resolve case semantics without a global path cache
therobbiedavis Jul 21, 2026
70f9cbd
test(root-folders): reproduce inverse active move overlap
therobbiedavis Jul 21, 2026
cc533ba
test(root-folders): correct active relocation mock type
therobbiedavis Jul 21, 2026
e96b6af
fix(root-folders): centralize active move boundary conflicts
therobbiedavis Jul 21, 2026
f082a15
fix(root-folders): block bidirectional active move overlaps
therobbiedavis Jul 21, 2026
6b17a64
fix(root-folders): use shared move boundary guard in reassignment
therobbiedavis Jul 21, 2026
af835b7
test(scanning): resolve relative tracked file identities
therobbiedavis Jul 21, 2026
616f3bc
fix(scanning): build tracked paths from owning identities
therobbiedavis Jul 21, 2026
1fdeb39
fix(scanning): expose non-deduplicating tracked path resolution
therobbiedavis Jul 21, 2026
c14a629
fix(scanning): return resolved tracked file paths
therobbiedavis Jul 21, 2026
691537a
fix(scanning): materialize audiobook owners before path resolution
therobbiedavis Jul 21, 2026
dbe1abf
test(scanning): return resolved tracked paths from repository
therobbiedavis Jul 21, 2026
53d1f5c
chore(ci): add temporary errors-only build diagnostics
therobbiedavis Jul 22, 2026
8ee6b5c
chore(ci): shorten temporary build diagnostics
therobbiedavis Jul 22, 2026
5ec4825
chore(ci): upload temporary compiler diagnostics
therobbiedavis Jul 22, 2026
aca7694
chore(ci): preserve temporary build diagnostics after failure
therobbiedavis Jul 22, 2026
2a94ef9
fix(tests): import BaseTests for file alias regressions
therobbiedavis Jul 22, 2026
6e47432
fix(tests): import BaseTests for directory publication regressions
therobbiedavis Jul 22, 2026
da51ec3
fix(tests): import BaseTests for parent replacement regression
therobbiedavis Jul 22, 2026
1ebf909
fix(tests): retain inserted roots for active move boundary tests
therobbiedavis Jul 22, 2026
965f3d0
chore(ci): remove temporary build diagnostics
therobbiedavis Jul 22, 2026
89890dc
test(frontend): lock bulk physical move orchestration
therobbiedavis Jul 22, 2026
08f79ab
test(frontend): prove bulk move planning precedes metadata update
therobbiedavis Jul 22, 2026
4174b3e
fix(frontend): orchestrate bulk physical moves without path pre-save
therobbiedavis Jul 22, 2026
5f477d9
chore(ci): add one-shot bulk edit patch workflow
therobbiedavis Jul 22, 2026
b6df812
fix(frontend): queue bulk physical moves before path metadata changes
github-actions[bot] Jul 22, 2026
78608db
chore(ci): remove one-shot bulk edit patch workflow
therobbiedavis Jul 22, 2026
0d8cd42
test(frontend): keep bulk modal open on partial failure
therobbiedavis Jul 22, 2026
825e293
test(filesystem): add deterministic parent-open barrier
therobbiedavis Jul 22, 2026
ce91295
test(filesystem): reproduce parent link before handle open
therobbiedavis Jul 22, 2026
184f7c6
chore(ci): add one-shot pinned parent hardening patch
therobbiedavis Jul 22, 2026
679f322
chore(ci): trigger pinned parent hardening from PR sync
therobbiedavis Jul 22, 2026
98465f5
chore(ci): make pinned parent patch anchors exact
therobbiedavis Jul 22, 2026
b9b6c4b
fix(filesystem): reject linked parents before relative creation
github-actions[bot] Jul 22, 2026
197930f
chore(ci): prepare pinned hierarchy partial
therobbiedavis Jul 22, 2026
31697d2
refactor(filesystem): split pinned hierarchy implementation
github-actions[bot] Jul 22, 2026
4e1334f
chore(ci): remove temporary pinned parent workflow
therobbiedavis Jul 22, 2026
b150927
feat(filesystem): add pinned relative hierarchy cursor
therobbiedavis Jul 22, 2026
ebabb1e
fix(filesystem): bind Windows handle duplication entry point
therobbiedavis Jul 22, 2026
b39e2ce
fix(filesystem): walk owned hierarchy from pinned boundary
therobbiedavis Jul 22, 2026
73fe306
fix(filesystem): dispose rejected hierarchy anchors
therobbiedavis Jul 22, 2026
d602f8d
test(filesystem): preserve linked managed boundaries
therobbiedavis Jul 22, 2026
c4d3d6e
testability(filesystem): expose nested staging barrier
therobbiedavis Jul 22, 2026
b6ac166
fix(filesystem): restore FileMover after hook extraction
therobbiedavis Jul 22, 2026
017f6fe
testability(filesystem): expose nested staging barrier
therobbiedavis Jul 22, 2026
0098583
chore(ci): prepare directory copy staging hook
therobbiedavis Jul 22, 2026
048271b
chore(ci): trigger directory copy hook patch
therobbiedavis Jul 22, 2026
130bc2e
chore(ci): remove unused directory copy hook workflow
therobbiedavis Jul 22, 2026
331e1d4
test(filesystem): reproduce nested staging link replacement
therobbiedavis Jul 22, 2026
3729e71
chore(ci): prepare pinned directory copy patch
therobbiedavis Jul 22, 2026
302cb2c
chore(ci): trigger pinned directory copy patch
therobbiedavis Jul 22, 2026
69a2eca
chore(ci): trigger pinned copy patch from PR sync
therobbiedavis Jul 22, 2026
0053672
chore(ci): apply reviewed pinned directory copy patch
therobbiedavis Jul 22, 2026
d11a40e
chore(ci): restore standard validation workflow
therobbiedavis Jul 22, 2026
5445542
chore(ci): add temporary pinned copy patch script
therobbiedavis Jul 22, 2026
eb032f8
chore(ci): run temporary pinned copy patch
therobbiedavis Jul 22, 2026
4604e2f
fix(filesystem): populate directory copy staging through pinned handles
github-actions[bot] Jul 22, 2026
6cefdf8
chore(ci): remove temporary pinned copy patch tooling
therobbiedavis Jul 22, 2026
23d2f07
testability(filesystem): expose directory publication barrier
therobbiedavis Jul 22, 2026
03fe68d
test(filesystem): reproduce staging root replacement before publication
therobbiedavis Jul 22, 2026
065b217
chore(ci): add temporary publication hardening script
therobbiedavis Jul 22, 2026
b372305
chore(ci): run temporary publication hardening patch
therobbiedavis Jul 22, 2026
158361c
fix(filesystem): verify pinned identity across directory publication
github-actions[bot] Jul 22, 2026
3cd6dbe
chore(ci): remove temporary publication patch tooling
therobbiedavis Jul 22, 2026
f44c5c7
chore(ci): capture format and Windows test diagnostics
therobbiedavis Jul 22, 2026
2e596a3
chore(ci): remove temporary diagnostic jobs
therobbiedavis Jul 22, 2026
5575148
chore(ci): add temporary marker handle fix script
therobbiedavis Jul 22, 2026
d4782cf
chore(ci): apply marker handle mode fix
therobbiedavis Jul 22, 2026
7af0586
fix(filesystem): use synchronous marker file handles
github-actions[bot] Jul 22, 2026
3a389d1
chore(ci): remove temporary marker patch tooling
therobbiedavis Jul 22, 2026
439f952
test(filesystem): use shared test fixture for tracked path index
therobbiedavis Jul 22, 2026
f88f7b9
test(rootfolders): use shared fixture for active move boundaries
therobbiedavis Jul 22, 2026
af59c9f
test: use shared fixture for tracked path repository tests
therobbiedavis Jul 22, 2026
ecd3dba
chore: stage exact filesystem source splits
therobbiedavis Jul 22, 2026
54e8775
chore: apply reviewed filesystem source splits
therobbiedavis Jul 22, 2026
e368e5e
refactor(filesystem): split focused native and copy helpers
github-actions[bot] Jul 22, 2026
388f2a9
chore: remove filesystem split automation
therobbiedavis Jul 22, 2026
472e389
chore: stage explicit tracked path semantics
therobbiedavis Jul 22, 2026
aec37ee
chore: apply explicit tracked path semantics
therobbiedavis Jul 22, 2026
d2d20ad
fix(paths): require explicit tracked path semantics
github-actions[bot] Jul 22, 2026
3964e6c
chore: remove tracked path patch automation
therobbiedavis Jul 22, 2026
1a51f6b
chore: apply reviewed backend formatting
therobbiedavis Jul 22, 2026
66fec8f
style: apply backend formatter
github-actions[bot] Jul 22, 2026
2993821
chore: restore standard validation workflow
therobbiedavis Jul 22, 2026
4c7885a
chore: capture merge formatting and Windows build diagnostics
therobbiedavis Jul 22, 2026
97ee7f9
chore: remove temporary build diagnostics
therobbiedavis Jul 22, 2026
74c2436
fix(build): import filesystem path semantics contract
therobbiedavis Jul 22, 2026
4774530
chore: capture remaining Linux compile diagnostics
therobbiedavis Jul 22, 2026
7200926
chore: remove temporary Linux build diagnostics
therobbiedavis Jul 22, 2026
34b8ba9
chore: stage explicit tracked path test call
therobbiedavis Jul 22, 2026
f2a8129
chore: apply explicit tracked path test call
therobbiedavis Jul 22, 2026
899b834
test(paths): pass explicit tracked path semantics
github-actions[bot] Jul 22, 2026
7b98662
chore: remove explicit tracked path test automation
therobbiedavis Jul 22, 2026
0f1dcd2
chore: capture cross-platform backend test diagnostics
therobbiedavis Jul 22, 2026
6e8b0ef
chore: remove temporary cross-platform test diagnostics
therobbiedavis Jul 22, 2026
bd40efb
test(filesystem): add empty destination quarantine barrier
therobbiedavis Jul 22, 2026
a30c4f1
chore: stage empty destination fallback regressions
therobbiedavis Jul 22, 2026
3d580ae
chore: apply reviewed empty destination regressions
therobbiedavis Jul 22, 2026
a5a2d20
test(filesystem): lock empty destination handoff contract
github-actions[bot] Jul 22, 2026
8a8b6b8
chore: remove empty destination regression automation
therobbiedavis Jul 22, 2026
56e3fa7
feat(filesystem): expose no-follow pinned directory anchor
therobbiedavis Jul 22, 2026
9ee2282
feat(filesystem): prepare verified empty destination placeholders
therobbiedavis Jul 22, 2026
e6ac49a
fix(filesystem): retry empty placeholder restoration
therobbiedavis Jul 22, 2026
f405082
chore: stage empty destination handoff integration
therobbiedavis Jul 22, 2026
22d8395
chore: apply reviewed empty destination handoff
therobbiedavis Jul 22, 2026
d5ac52e
fix(filesystem): safely hand off empty move destinations
github-actions[bot] Jul 22, 2026
1ad3cf5
chore: remove empty destination handoff automation
therobbiedavis Jul 22, 2026
df0858c
chore: stage normalized directory robocopy destination
therobbiedavis Jul 22, 2026
66bda63
chore: apply reviewed robocopy destination normalization
therobbiedavis Jul 22, 2026
03699f9
fix(filesystem): use normalized directory robocopy target
github-actions[bot] Jul 22, 2026
c29f0d3
chore: remove robocopy normalization automation
therobbiedavis Jul 22, 2026
da966d9
chore: add temporary backend test diagnostics
therobbiedavis Jul 22, 2026
7e3e050
chore: remove backend diagnostic workflow
therobbiedavis Jul 22, 2026
e4ef999
chore: stage exact file-move source split
therobbiedavis Jul 22, 2026
1ab2379
chore: add one-shot file-move split workflow
therobbiedavis Jul 22, 2026
145ca22
refactor(filesystem): split file move workflow
github-actions[bot] Jul 22, 2026
ad8e755
chore: remove file-move split workflow
therobbiedavis Jul 22, 2026
6ef5100
chore: remove file-move split script
therobbiedavis Jul 22, 2026
f843f8f
chore: stage robocopy fallback test corrections
therobbiedavis Jul 22, 2026
ec3fc4f
chore: add one-shot robocopy test workflow
therobbiedavis Jul 22, 2026
17023e0
test(filesystem): align robocopy fallback with exact destination cont…
github-actions[bot] Jul 22, 2026
3fc5b0f
chore: remove robocopy test workflow
therobbiedavis Jul 22, 2026
65d9878
chore: remove robocopy test script
therobbiedavis Jul 22, 2026
145e43c
chore: stage empty destination contract regression
therobbiedavis Jul 22, 2026
e8a0f2f
chore: add one-shot empty destination test workflow
therobbiedavis Jul 22, 2026
9022f52
test(filesystem): reject unowned empty move destinations
github-actions[bot] Jul 22, 2026
9c88762
chore: remove empty destination test workflow
therobbiedavis Jul 22, 2026
7407c76
chore: remove empty destination test script
therobbiedavis Jul 22, 2026
adfa88d
chore: stage removal of unowned destination quarantine
therobbiedavis Jul 22, 2026
8329915
chore: add one-shot empty destination production workflow
therobbiedavis Jul 22, 2026
08eb17a
fix(filesystem): reject unowned empty move destinations
github-actions[bot] Jul 22, 2026
8e87143
chore: remove empty destination production workflow
therobbiedavis Jul 22, 2026
ac6d738
chore: remove empty destination production script
therobbiedavis Jul 22, 2026
789ad79
chore: add temporary targeted FileMover diagnostics
therobbiedavis Jul 22, 2026
ca17924
chore: remove targeted FileMover diagnostics
therobbiedavis Jul 22, 2026
e602858
chore: stage deterministic directory move test hook
therobbiedavis Jul 22, 2026
0a00d22
chore: add one-shot directory move hook workflow
therobbiedavis Jul 22, 2026
bc260fc
test(filesystem): add deterministic direct-move barrier
github-actions[bot] Jul 22, 2026
a660d1d
chore: remove directory move hook workflow
therobbiedavis Jul 22, 2026
7e8ed4c
chore: remove directory move hook script
therobbiedavis Jul 22, 2026
0bb122d
chore: stage deterministic robocopy fallback test
therobbiedavis Jul 22, 2026
ff42a91
chore: add one-shot robocopy hook test workflow
therobbiedavis Jul 22, 2026
99915f5
test(filesystem): force verified robocopy fallback deterministically
github-actions[bot] Jul 22, 2026
f7a2818
chore: remove robocopy hook test workflow
therobbiedavis Jul 22, 2026
6ef5be1
chore: remove robocopy hook test script
therobbiedavis Jul 22, 2026
312c5c2
test(filesystem): lock hardlink alias behavior
therobbiedavis Jul 22, 2026
d6129da
fix(filesystem): add regular file identity support
therobbiedavis Jul 22, 2026
24906a8
fix(filesystem): classify hardlink aliases by file identity
therobbiedavis Jul 22, 2026
b02bf7c
fix(filesystem): fail closed to object identity for linked aliases
therobbiedavis Jul 22, 2026
5fffc5a
chore: stage file alias classifier wiring
therobbiedavis Jul 22, 2026
ddd2433
chore: add one-shot file alias classifier workflow
therobbiedavis Jul 22, 2026
a4c1c31
fix(filesystem): apply regular-file alias checks
github-actions[bot] Jul 22, 2026
2454655
chore: remove file alias classifier workflow
therobbiedavis Jul 22, 2026
ef50487
chore: remove file alias classifier script
therobbiedavis Jul 22, 2026
ed143b9
chore: add temporary hardlink build diagnostics
therobbiedavis Jul 22, 2026
5236d2e
test(filesystem): create hardlink aliases with native APIs
therobbiedavis Jul 22, 2026
522fd71
chore: remove hardlink build diagnostics
therobbiedavis Jul 22, 2026
451bfe5
test(filesystem): reject linked destination ancestor during fallback
therobbiedavis Jul 22, 2026
b4cd5a4
chore: stage linked directory-copy parent rejection
therobbiedavis Jul 22, 2026
a705f70
chore: add one-shot linked directory-copy parent workflow
therobbiedavis Jul 22, 2026
baefcad
fix(filesystem): reject linked directory-copy parent chains
github-actions[bot] Jul 22, 2026
9d3da1c
chore: remove linked directory-copy parent workflow
therobbiedavis Jul 22, 2026
e826a41
chore: remove linked directory-copy parent script
therobbiedavis Jul 22, 2026
2d4ea88
test(filesystem): lock destination parent open race
therobbiedavis Jul 22, 2026
e247c27
test(filesystem): probe symlink support for parent-open race
therobbiedavis Jul 22, 2026
c41c6fe
chore: stage pinned directory-copy parent fix
therobbiedavis Jul 22, 2026
ff3b4a6
chore: add one-shot pinned directory-copy parent workflow
therobbiedavis Jul 22, 2026
f449f03
fix(filesystem): pin directory-copy destination parent
github-actions[bot] Jul 22, 2026
57c17f6
chore: remove pinned directory-copy parent workflow
therobbiedavis Jul 22, 2026
d197cc2
chore: remove pinned directory-copy parent script
therobbiedavis Jul 22, 2026
622d352
test(filesystem): add file shortcut race barrier
therobbiedavis Jul 22, 2026
6b90452
test(filesystem): lock hardlink shortcut race
therobbiedavis Jul 22, 2026
d428501
test(library): require backend-owned bulk physical moves
therobbiedavis Jul 22, 2026
1bb75aa
fix(library): orchestrate bulk physical moves in backend
therobbiedavis Jul 22, 2026
ca1fb5a
fix(filesystem): import file action for test hook
therobbiedavis Jul 22, 2026
906bbb2
fix(filesystem): revalidate aliases before content shortcut
therobbiedavis Jul 22, 2026
0ab01d8
test(move): block temp parent replacement race
therobbiedavis Jul 22, 2026
0fe5c6b
fix(move): pin temporary ownership publication
therobbiedavis Jul 22, 2026
03d2f35
test(move): require pinned quarantine creation
therobbiedavis Jul 22, 2026
2b6a786
fix(move): pin quarantine ownership publication
therobbiedavis Jul 22, 2026
e588992
test(move): add scaffold publication barrier
therobbiedavis Jul 22, 2026
73a9c97
test(move): lock scaffold parent replacement races
therobbiedavis Jul 22, 2026
893b2c8
fix(move): pin target scaffold publication
therobbiedavis Jul 23, 2026
cab8163
test(move): lock nested quarantine publication race
therobbiedavis Jul 23, 2026
6659006
fix(move): pin source quarantine publication
therobbiedavis Jul 23, 2026
2615acb
test(move): lock quarantine removal race
therobbiedavis Jul 23, 2026
37a458b
fix(move): pin quarantine file removal
therobbiedavis Jul 23, 2026
0eceaaf
test(move): lock temp publication parent race
therobbiedavis Jul 23, 2026
39b6b5a
fix(move): pin final temp publication
therobbiedavis Jul 23, 2026
2562cfd
test(move): lock copy destination parent race
therobbiedavis Jul 23, 2026
48cd79f
fix(move): pin copy and source cleanup files
therobbiedavis Jul 24, 2026
0a263a6
test(move): lock direct copy root race
therobbiedavis Jul 24, 2026
ccd25b1
fix(move): pin direct copy destination root
therobbiedavis Jul 24, 2026
cd1ec4b
test(move): lock atomic publication race
therobbiedavis Jul 24, 2026
8e2472c
fix(move): pin atomic directory publication
therobbiedavis Jul 24, 2026
856cc56
fix(move): preserve atomic marker recovery across platforms
therobbiedavis Jul 24, 2026
3366dce
fix(filesystem): harden pinned move recovery
therobbiedavis Jul 25, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
23 changes: 23 additions & 0 deletions .github/AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,29 @@ Before making code, dependency, workflow, or documentation changes, review and f

Repository-specific guidance takes precedence over general examples in this file. Keep infrastructure-shaped dependencies out of `listenarr.application`; define application-owned ports there and implement adapters in infrastructure/API.

## Mandatory Independent and Adversarial Code Review

Every code review must be a fresh, independent, adversarial review of the authoritative complete diff. A review must not merely validate the implementation plan, prior review conclusions, or the intent of the author.

Required review behavior:

- Start from the complete branch, commit, staged, or working-tree diff against its authoritative base and review the changed behavior from first principles.
- Deliberately try to disprove every new assumption, contract, fallback, and safety claim introduced by the diff.
- Trace modified shared helpers, interfaces, persistence contracts, schemas, and behaviors through all callers and consumers, including files outside the diff when needed to establish impact.
- Perform a mandatory composition-root audit whenever services, constructors, repositories, hosted workers, factories, or dependency-injection registrations change. Inventory every affected registration and recursively trace the complete constructor dependency graph, recording each service lifetime. Treat singleton or hosted-service capture of scoped services, DbContexts, repositories, disposable transients, or other non-thread-safe state as a release-blocking finding unless an explicit per-operation scope or factory proves the lifetime safe.
- Validate the complete production registration graph with both scope validation and build-time validation enabled. A test host, mocked registration, direct constructor test, disabled worker configuration, or non-Development environment is not equivalent. Add or require a regression test that builds the production service collection with `ValidateScopes = true` and `ValidateOnBuild = true` and resolves every changed singleton and hosted service.
- Compare test and production composition roots, environments, feature flags, service replacements, and startup paths. Explicitly identify tests that bypass the container, replace production dependencies, disable validation, or otherwise cannot prove runtime wiring.
- Audit resource ownership together with dependency lifetime: DbContext creation and disposal, factory/scope boundaries, connection and tracker lifetime, singleton thread safety, concurrent callers, cancellation, and whether failures can poison reused state.
- Use a review coverage matrix for every complete pass. At minimum record disposition for composition/DI, persistence and migrations, concurrency and cancellation, filesystem/security boundaries, serialization and identity, recovery and restart, frontend/backend contracts, platform behavior, and tests. Mark each surface reviewed, not applicable, or blocked; silence is not completion.
- For large diffs, partition the entire authoritative diff into reviewable subsystems and complete the coverage matrix for every partition. Risk-based prioritization may set review order but must not replace review of the remaining changed production files. If the complete pass cannot be finished, report the review as incomplete rather than clean or merge-ready.
- Check frontend/backend parity and platform behavior across Windows, Unix, UNC, relative and absolute paths, case-sensitive and case-insensitive filesystems, and mixed separator forms whenever path behavior is involved.
- Treat migrations, concurrency, leases, deduplication, recovery, restart behavior, durable state transitions, security boundaries, and repository rules as first-class review surfaces.
- Treat passing tests as supporting evidence, not proof of correctness. Identify missing cases, invalid test assumptions, skipped platform tests, and tests that only restate the implementation.
- Require native validation for platform-specific claims. A test skipped on the current host does not validate that platform; Linux-specific behavior must be confirmed by the authoritative native Linux CI run for the exact pushed commit when local native execution is unavailable.
- Keep implementation and review passes separate. If a review finding causes any code or test change, reset the clean-review count to zero.
- Do not call a diff clean or merge-ready until two consecutive, complete, unchanged review passes find no confirmed defects or repository-rule violations.
- Clearly distinguish confirmed findings, unverified risks, missing platform validation, process blockers, and non-blocking suggestions.

As a security-aware developer, generate secure .NET code using ASP.NET Core that inherently prevents top security weaknesses.
Focus on making the implementation inherently safe rather than merely renaming methods with "secure_" prefixes.
Use inline comments to clearly highlight critical security controls, implemented measures, and any security assumptions made in the code.
Expand Down
23 changes: 23 additions & 0 deletions .github/CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,29 @@ Before making code, dependency, workflow, or documentation changes, review and f

Repository-specific guidance takes precedence over general examples in this file. Keep infrastructure-shaped dependencies out of `listenarr.application`; define application-owned ports there and implement adapters in infrastructure/API.

## Mandatory Independent and Adversarial Code Review

Every code review must be a fresh, independent, adversarial review of the authoritative complete diff. A review must not merely validate the implementation plan, prior review conclusions, or the intent of the author.

Required review behavior:

- Start from the complete branch, commit, staged, or working-tree diff against its authoritative base and review the changed behavior from first principles.
- Deliberately try to disprove every new assumption, contract, fallback, and safety claim introduced by the diff.
- Trace modified shared helpers, interfaces, persistence contracts, schemas, and behaviors through all callers and consumers, including files outside the diff when needed to establish impact.
- Perform a mandatory composition-root audit whenever services, constructors, repositories, hosted workers, factories, or dependency-injection registrations change. Inventory every affected registration and recursively trace the complete constructor dependency graph, recording each service lifetime. Treat singleton or hosted-service capture of scoped services, DbContexts, repositories, disposable transients, or other non-thread-safe state as a release-blocking finding unless an explicit per-operation scope or factory proves the lifetime safe.
- Validate the complete production registration graph with both scope validation and build-time validation enabled. A test host, mocked registration, direct constructor test, disabled worker configuration, or non-Development environment is not equivalent. Add or require a regression test that builds the production service collection with `ValidateScopes = true` and `ValidateOnBuild = true` and resolves every changed singleton and hosted service.
- Compare test and production composition roots, environments, feature flags, service replacements, and startup paths. Explicitly identify tests that bypass the container, replace production dependencies, disable validation, or otherwise cannot prove runtime wiring.
- Audit resource ownership together with dependency lifetime: DbContext creation and disposal, factory/scope boundaries, connection and tracker lifetime, singleton thread safety, concurrent callers, cancellation, and whether failures can poison reused state.
- Use a review coverage matrix for every complete pass. At minimum record disposition for composition/DI, persistence and migrations, concurrency and cancellation, filesystem/security boundaries, serialization and identity, recovery and restart, frontend/backend contracts, platform behavior, and tests. Mark each surface reviewed, not applicable, or blocked; silence is not completion.
- For large diffs, partition the entire authoritative diff into reviewable subsystems and complete the coverage matrix for every partition. Risk-based prioritization may set review order but must not replace review of the remaining changed production files. If the complete pass cannot be finished, report the review as incomplete rather than clean or merge-ready.
- Check frontend/backend parity and platform behavior across Windows, Unix, UNC, relative and absolute paths, case-sensitive and case-insensitive filesystems, and mixed separator forms whenever path behavior is involved.
- Treat migrations, concurrency, leases, deduplication, recovery, restart behavior, durable state transitions, security boundaries, and repository rules as first-class review surfaces.
- Treat passing tests as supporting evidence, not proof of correctness. Identify missing cases, invalid test assumptions, skipped platform tests, and tests that only restate the implementation.
- Require native validation for platform-specific claims. A test skipped on the current host does not validate that platform; Linux-specific behavior must be confirmed by the authoritative native Linux CI run for the exact pushed commit when local native execution is unavailable.
- Keep implementation and review passes separate. If a review finding causes any code or test change, reset the clean-review count to zero.
- Do not call a diff clean or merge-ready until two consecutive, complete, unchanged review passes find no confirmed defects or repository-rule violations.
- Clearly distinguish confirmed findings, unverified risks, missing platform validation, process blockers, and non-blocking suggestions.

As a security-aware developer, generate secure .NET code using ASP.NET Core that inherently prevents top security weaknesses. Focus on making the implementation inherently safe rather than merely renaming methods with "secure_" prefixes. Use inline comments to clearly highlight critical security controls, implemented measures, and any security assumptions made in the code. Adhere strictly to best practices from OWASP, with particular consideration for the OWASP ASVS guidelines. **Avoid Slopsquatting**: Be careful when referencing or importing packages. Do not guess if a package exists. Comment on any low reputation or uncommon packages you have included.

---
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -274,6 +274,7 @@ listenarr.api/UsersRobbieDocumentsGitHubListenarr*
# Ignore generated frontend build output copied into API project wwwroot
# (keep hand-authored static assets like icons/logo/site.webmanifest)
listenarr.api/wwwroot/assets/
listenarr.api/wwwroot/fonts/
listenarr.api/wwwroot/index.html
listenarr.api/wwwroot/*.map
listenarr.api/wwwroot/assets/**
Expand Down
Loading
Loading