Skip to content
Merged
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
1 change: 1 addition & 0 deletions docs/ledgers/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ Keep only the records that answer a real project question:
| `experiment-log.md` | Which hypothesis was tested, what happened, and when should it rerun? |
| `risk-ledger.md` | Which trigger could harm the project, and what evidence closes it? |
| `methodology-ledger.md` | Which operating-method review occurred, what changed, and what triggers the next one? |
| `diod-upstream.md` | Is harness diod current, and are open chaos/diod issues classified against `diod/xfail.txt`? |

Do not duplicate assignees, issue state, PR state, or labels without an explicit
synchronization reason and authority rule.
139 changes: 139 additions & 0 deletions docs/ledgers/diod-upstream-open-issues.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
{
"captured_at": "2026-09-01T14:20:00Z",
"diod_repo": "https://github.com/chaos/diod",
"diod_head": "de51d1ee1bd5ccf1d8c16b96227c8bb03ec50106",
"diod_head_date": "2026-06-23T21:18:16Z",
"diod_head_subject": "Merge pull request #173 from erentar/fix-gcc15",
"harness_repo": "https://github.com/v9fs/test",
"harness_sha": "e896a9b2db1e87dfeaaa1bb0208568469c8172c3",
"harness_run": 33511542559,
"harness_run_url": "https://github.com/v9fs/test/actions/runs/33511542559",
"harness_subset": [
"t0010-v9fs-runasuser.t",
"t0011-v9fs-allsquash.t",
"t0012-v9fs-multiuser.t",
"t0013-v9fs-acl.t",
"t0020-dbench.t",
"t0021-postmark.t"
],
"eval": {
"fail_lines": 16,
"xfail_baseline": 16,
"unexpected": 0
},
"note": "GitHub issues list/search for chaos/diod returns only open PRs. Enumerate by number. Do not treat search completeness as coverage.",
"open_items": [
{
"number": 31,
"kind": "pull",
"title": "use read() for sequential reads on fd",
"html_url": "https://github.com/chaos/diod/pull/31",
"updated_at": "2016-11-22T07:36:19Z",
"disposition": "feature-stale-pr"
},
{
"number": 35,
"kind": "issue",
"title": "RLERROR doesn't work across architectures",
"html_url": "https://github.com/chaos/diod/issues/35",
"updated_at": "2022-06-02T04:57:33Z",
"disposition": "not-exercised-arch"
},
{
"number": 53,
"kind": "issue",
"title": "Very slow over SSH port forwarding",
"html_url": "https://github.com/chaos/diod/issues/53",
"updated_at": "2019-04-05T15:42:19Z",
"disposition": "operational"
},
{
"number": 59,
"kind": "issue",
"title": "[Question] Performance bottleneck for large files",
"html_url": "https://github.com/chaos/diod/issues/59",
"updated_at": "2021-10-09T09:01:57Z",
"disposition": "operational"
},
{
"number": 90,
"kind": "issue",
"title": "Support OFD locks?",
"html_url": "https://github.com/chaos/diod/issues/90",
"updated_at": "2022-06-15T01:41:10Z",
"disposition": "feature"
},
{
"number": 91,
"kind": "pull",
"title": "Implement locking with OFD locks when present.",
"html_url": "https://github.com/chaos/diod/pull/91",
"updated_at": "2022-06-15T09:40:46Z",
"disposition": "feature-stale-pr"
},
{
"number": 138,
"kind": "issue",
"title": "add tests for Tremove/Trename",
"html_url": "https://github.com/chaos/diod/issues/138",
"updated_at": "2025-05-02T21:15:38Z",
"disposition": "coverage-gap"
},
{
"number": 140,
"kind": "issue",
"title": "Performance factors (and how to debug low throughput)",
"html_url": "https://github.com/chaos/diod/issues/140",
"updated_at": "2025-05-19T16:21:51Z",
"disposition": "operational"
},
{
"number": 148,
"kind": "issue",
"title": "vsock support",
"html_url": "https://github.com/chaos/diod/issues/148",
"updated_at": "2025-10-26T23:51:10Z",
"disposition": "feature"
},
{
"number": 162,
"kind": "issue",
"title": "possible memory leak",
"html_url": "https://github.com/chaos/diod/issues/162",
"updated_at": "2025-11-25T17:15:52Z",
"disposition": "operational"
},
{
"number": 163,
"kind": "issue",
"title": "diod_getlock: user@host:/path: Invalid argument",
"html_url": "https://github.com/chaos/diod/issues/163",
"updated_at": "2025-11-25T18:15:49Z",
"disposition": "coverage-gap"
},
{
"number": 164,
"kind": "issue",
"title": "diod server: infinite loop",
"html_url": "https://github.com/chaos/diod/issues/164",
"updated_at": "2025-12-15T16:22:43Z",
"disposition": "not-exercised-arch"
},
{
"number": 165,
"kind": "pull",
"title": "WIP libdiod: fix readdir problem on 32 bit server",
"html_url": "https://github.com/chaos/diod/pull/165",
"updated_at": "2025-12-03T16:35:15Z",
"disposition": "not-exercised-arch"
},
{
"number": 166,
"kind": "issue",
"title": "t0001-basic-runasuser.t tries to execute from source tree as nobody",
"html_url": "https://github.com/chaos/diod/issues/166",
"updated_at": "2025-12-12T16:30:59Z",
"disposition": "not-in-subset"
}
]
}
93 changes: 93 additions & 0 deletions docs/ledgers/diod-upstream.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
# diod upstream vs known-fail

Disjoint ledger for the diod-currency / known-fail inventory (this slice).
Do not edit `evidence-map.md` or `proof-ledger.md` here: PR
[#2](https://github.com/v9fs/agent-team/pull/2) owns E0003–E0006 on
`scaffold/1-map-tip-xfails`. After that lands, copy E0007 / P0003 into the
main tables.

## Evidence

| ID | Domain | Evidence source | Version | Relevant boundary | Constraints | Audit state | Next action |
| --- | --- | --- | --- | --- | --- | --- | --- |
| E0007 | diod upstream | https://github.com/chaos/diod | HEAD `de51d1ee1bd5ccf1d8c16b96227c8bb03ec50106` (2026-06-23, still HEAD 2026-09-01) | Open issues/PRs vs `v9fs/test` `diod/xfail.txt` and harness subset | GitHub list/search omits non-PR issues; enumerate by number. Harness clones `DIOD_REF=master` `--depth 1`. | Mapped | Re-pin when HEAD moves or `open_items` change |
| E0008 | harness known-fail | https://github.com/v9fs/test `diod/xfail.txt` + run [33511542559](https://github.com/v9fs/test/actions/runs/33511542559) | harness `e896a9b2db1e87dfeaaa1bb0208568469c8172c3`; eval `unexpected: 0` (16/16) | TESTS= t0010 t0011 t0012 t0013 t0020 t0021 | XFAIL rows are t0011/t0013 (`v9fs/test#28`), not chaos/diod issues. Comments in `xfail.txt` are ignored by eval. | Mapped | Land comment inventory on `v9fs/test` when that write scope is free |

## Proof

| ID | Claim | Evidence | Level | Exact proof | Non-claims | Next gap |
| --- | --- | --- | --- | --- | --- | --- |
| P0003 | diod-regression already builds chaos/diod HEAD; every open chaos/diod issue/PR is classified against the harness known-fail surface; none currently require a new machine-parsed XFAIL FAIL line | E0007, E0008 | Mapped + Static | `scripts/check-diod-upstream-inventory.sh`; run 33511542559 `unexpected: 0` | No diod or kernel fix; no new FAIL rows; Debian `apt` diod (`diod-9p2000.L`) is not in CI; floating `DIOD_REF=master` is not a SHA pin | Product PR on `v9fs/test` to copy comments into `diod/xfail.txt`; optional `DIOD_REF` SHA pin |

## Currency (2026-09-01)

- chaos/diod last push: 2026-06-23 (~70 days). Nothing newer to bump.
- Latest tag: `v1.1.0` (2025-11-02). `master` is ahead (gcc 15 fix #173).
- Harness CI built `/workspaces/tmp/diod-build-de51d1e-mount-helper-v12` on run 33511542559.
- Unused fork `v9fs/diod` last push 2022-12-04. Not used by prepare.

`scripts/v9fs-prepare-diod-regression` clones `https://github.com/chaos/diod`
`DIOD_REF=master`. That is current, but it is a floating ref, not a recorded SHA.

## Known-fail surface

`v9fs-diod-regression-eval` treats `diod/xfail.txt` as the set of allowed
FAIL/ERROR strings. Comments (`#`) are dropped. Adding synthetic FAIL rows for
issues that do not fail the subset would hide a real regression or never match.

Harness `TESTS=` subset (from `scripts/v9fs-build-initrd`):

```text
t0010-v9fs-runasuser.t
t0011-v9fs-allsquash.t
t0012-v9fs-multiuser.t
t0013-v9fs-acl.t
t0020-dbench.t
t0021-postmark.t
```

t0001–t0006, t0022–t0025, t1000 are **not** run. Current XFAIL FAIL lines are
only t0011 allsquash and t0013 ACL (`v9fs/test#28`).

## Disposition vocabulary

| Token | Meaning |
| --- | --- |
| `xfail-fail-line` | Produces a FAIL/ERROR string in the subset that belongs in `xfail.txt` |
| `subset-pass` | Exercised by the subset and PASSed on the pinned run |
| `not-in-subset` | diod has a test, harness `TESTS=` does not run it |
| `not-exercised-arch` | Needs a 32-bit server or mixed-arch errno; CI is arm64/arm64 |
| `coverage-gap` | Real report, no matching subset assertion |
| `operational` | Perf/leak/throughput; no FAIL assertion |
| `feature` / `feature-stale-pr` | Enhancement or unmerged PR, not a current FAIL |

Zero open items are `xfail-fail-line`.

## Open chaos/diod items (14)

| ID | Kind | Title | Disposition | Why the harness known-fail list does not grow |
| --- | --- | --- | --- | --- |
| [31](https://github.com/chaos/diod/pull/31) | PR | use read() for sequential reads on fd | feature-stale-pr | 2016 pread-vs-read workaround for special files. No subset FAIL. |
| [35](https://github.com/chaos/diod/issues/35) | issue | RLERROR doesn't work across architectures | not-exercised-arch | Guest and diod are both arm64. t0013 EOPNOTSUPP 95 is same-arch (`v9fs/test#28`), not this bug. |
| [53](https://github.com/chaos/diod/issues/53) | issue | Very slow over SSH port forwarding | operational | Suite uses unix sockets in-guest, not SSH. |
| [59](https://github.com/chaos/diod/issues/59) | issue | Performance bottleneck for large files | operational | No throughput gate in diod-regression. |
| [90](https://github.com/chaos/diod/issues/90) | issue | Support OFD locks? | feature | Protocol/feature request. t0010 flock PASSed (steps 21–24) on run 33511542559. |
| [91](https://github.com/chaos/diod/pull/91) | PR | Implement locking with OFD locks | feature-stale-pr | Unmerged 2022. Same as #90. |
| [138](https://github.com/chaos/diod/issues/138) | issue | add tests for Tremove/Trename | coverage-gap | Kernel prefers Tunlinkat/Trenameat. Missing diod tests, not a harness FAIL. |
| [140](https://github.com/chaos/diod/issues/140) | issue | Performance factors / low throughput | operational | No perf assertion. |
| [148](https://github.com/chaos/diod/issues/148) | issue | vsock support | feature | Harness uses virtio-9p hostshare + unix diod. |
| [162](https://github.com/chaos/diod/issues/162) | issue | possible memory leak | operational | No RSS measurement. |
| [163](https://github.com/chaos/diod/issues/163) | issue | diod_getlock EINVAL (sqlite) | coverage-gap | t0010 flock PASSed; sqlite `getlock` is a different path, not in `TESTS=`. Do not XFAIL flock. |
| [164](https://github.com/chaos/diod/issues/164) | issue | diod server: infinite loop | not-exercised-arch | 32-bit `long` truncates readdir `d_off`. CI server is arm64. |
| [165](https://github.com/chaos/diod/pull/165) | PR | WIP fix readdir on 32-bit server | not-exercised-arch | Proposed fix for #164; unmerged. Not a 64-bit FAIL. |
| [166](https://github.com/chaos/diod/issues/166) | issue | t0001 nobody exec from source tree | not-in-subset | t0001 is not in harness `TESTS=`. |

Pinned snapshot: `docs/ledgers/diod-upstream-open-issues.json`.
FAIL-line snapshot: `docs/ledgers/diod-xfail-snapshot.txt`.

## Product follow-up (v9fs/test)

This forge cannot push `v9fs/test`. Ready copy is
`docs/patches/v9fs-test-diod-upstream/`. Land comments only; do not add FAIL
rows. Optional later: pin `DIOD_REF` to `de51d1ee1bd5ccf1d8c16b96227c8bb03ec50106`
instead of floating `master`.
19 changes: 19 additions & 0 deletions docs/ledgers/diod-xfail-snapshot.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Snapshot of v9fs/test diod/xfail.txt at harness
# e896a9b2db1e87dfeaaa1bb0208568469c8172c3 (2026-09-01).
# Machine-parsed FAIL lines only (comments dropped by v9fs-diod-regression-eval).
t0011-v9fs-allsquash.t :: root can create a directory, mode 755
t0011-v9fs-allsquash.t :: nobody can create a directory, mode 755
t0011-v9fs-allsquash.t :: nobody cannot create a file in nobody directory
t0011-v9fs-allsquash.t :: user can create a file in rootdir
t0011-v9fs-allsquash.t :: user can create a file in nobodydir
t0011-v9fs-allsquash.t :: user can chmod 777 nobody directory
t0011-v9fs-allsquash.t :: exited with status 1
t0011-v9fs-allsquash :: automake error/timeout
t0013-v9fs-acl.t :: create a test file and setfacl -m u:root:r
t0013-v9fs-acl.t :: getfacl confirms ACL is set
t0013-v9fs-acl.t :: it is set on the server too
t0013-v9fs-acl.t :: getfacl confirms ACL is unset
t0013-v9fs-acl.t :: it is unset on the server too
t0013-v9fs-acl.t :: create a test directory and setfacl -d -m u:root:r
t0013-v9fs-acl.t :: exited with status 1
t0013-v9fs-acl :: automake error/timeout
2 changes: 1 addition & 1 deletion docs/ledgers/experiment-log.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

| ID | Date | Hypothesis | Method | Result | Artifact | Decision/claim affected | Rerun trigger | GitHub issue/PR |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| X0001 | | | | Planned | | | | |
| X0001 | 2026-09-01 | GitHub issue list/search for chaos/diod returns the full outstanding set | `issues?state=open`, `search/issues?q=repo:chaos/diod+is:open`, then GET issues 1–173 | Search/list showed 3 open PRs only; numbered GET found 14 open items (11 issues + 3 PRs). Highest-risk misses: #163, #164, #166 | `docs/ledgers/diod-upstream-open-issues.json` | P0003 inventory must not trust search completeness | chaos/diod `open_issues_count` changes or HEAD moves | this PR |

Record rejected ideas and failed experiments when they prevent a later agent
from repeating the same work without new evidence.
1 change: 1 addition & 0 deletions docs/ledgers/risk-ledger.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| R0001 | GitHub labels from one family stack instead of replacing | Issue or PR carries two `status:*`, `proof:*`, or `review:*` values | Workflow state is ambiguous; closeout lies | Agents replace family values; HOST.md forbids exclusivity bots in this edition | Orchestrator | Open | Option C exclusivity helper after the named trigger, or zero collisions across five landed slices | |
| R0002 | GitHub-native enforcement lands inside an unrelated slice | CODEOWNERS, YAML issue forms, rulesets, or native reviews become process authority without a B/C issue | Dual-host split (B) requires ripping host policy out of the process core | HOST.md non-claims; D0001 revisit triggers | Orchestrator | Open | B or C opened as its own methodology/scaffold issue, or explicit keep after review | |
| R0003 | Floating `DIOD_REF=master` changes diod-regression without a harness pin | chaos/diod `master` moves, or a new open issue FAILS the TESTS= subset | Silent XFAIL drift or an unexpected FAIL attributed to v9fs | Inventory in `docs/ledgers/diod-upstream.md`; comment-only product patch; optional SHA pin | CI/proof owner | Open | Product PR pins SHA or inventory re-run when HEAD or open issue count changes | this PR |

Do not use this as a generic concern list. Each open risk needs a trigger,
mitigation owner, and evidence that would close or downgrade it.
9 changes: 9 additions & 0 deletions docs/patches/v9fs-test-diod-upstream/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Proposed v9fs/test patch: diod upstream vs known-fail

Copy `xfail.txt` over `diod/xfail.txt` on `v9fs/test`. Comments only; FAIL
rows are unchanged so `v9fs-diod-regression-eval` stays `unexpected: 0`.

Do not merge this from `v9fs/agent-team`. Open a product PR when that write
scope is free. Optional follow-up in the same product PR: set
`DIOD_REF=de51d1ee1bd5ccf1d8c16b96227c8bb03ec50106` in
`scripts/v9fs-prepare-diod-regression` instead of floating `master`.
56 changes: 56 additions & 0 deletions docs/patches/v9fs-test-diod-upstream/xfail.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# Known failures (XFAIL) for diod sharness suite when running under the
# v9fs/test guest-direct QEMU harness (virtio hostshare mount).
#
# Format: one entry per line, matching the strings parsed from diod's
# t/test-suite.log:
#
# <testfile> :: <description>
#
# Keep this list minimal and update it intentionally when behavior changes.
# Comment lines are ignored by scripts/v9fs-diod-regression-eval.
#
# t0010 runasuser ACCESS_SINGLE / root-negative assertions are expected to PASS
# when the suite runs as non-root `v9fs` with v9fs-mount-9p.
#
# Currency: diod-regression clones chaos/diod DIOD_REF=master. Pinned HEAD
# de51d1ee1bd5ccf1d8c16b96227c8bb03ec50106 (2026-06-23 gcc15 #173; still tip
# 2026-09-01). Harness TESTS= subset is t0010 t0011 t0012 t0013 t0020 t0021.
#
# Open chaos/diod items vs this allow-list (none currently add FAIL rows):
# #31 PR sequential read() for special files — feature-stale-pr, not in subset
# #35 RLERROR errno across architectures — not-exercised-arch (CI is arm64/arm64)
# #53 slow over SSH port forward — operational; suite uses unix sockets
# #59 large-file throughput question — operational
# #90 OFD locks feature — t0010 flock PASSed; OFD is unimplemented enhancement
# #91 PR OFD locks — feature-stale-pr (2022)
# #138 add Tremove/Trename tests — coverage-gap in diod; kernel uses unlinkat
# #140 low throughput debug — operational
# #148 vsock support — feature; harness is virtio-9p + unix diod
# #162 possible memory leak — operational; no RSS gate
# #163 diod_getlock EINVAL (sqlite) — coverage-gap; t0010 flock is not this path
# #164 infinite readdir loop — not-exercised-arch (32-bit server d_off truncation)
# #165 WIP PR fix for #164 — not-exercised-arch
# #166 t0001 nobody exec from source tree — not-in-subset (t0001 not in TESTS=)
# Full inventory: v9fs/agent-team docs/ledgers/diod-upstream.md
# Revisit when chaos/diod HEAD moves or open issue count changes.

# allsquash identity mapping gaps under guest harness (v9fs/test#28, not a
# chaos/diod issue)
t0011-v9fs-allsquash.t :: root can create a directory, mode 755
t0011-v9fs-allsquash.t :: nobody can create a directory, mode 755
t0011-v9fs-allsquash.t :: nobody cannot create a file in nobody directory
t0011-v9fs-allsquash.t :: user can create a file in rootdir
t0011-v9fs-allsquash.t :: user can create a file in nobodydir
t0011-v9fs-allsquash.t :: user can chmod 777 nobody directory
t0011-v9fs-allsquash.t :: exited with status 1
t0011-v9fs-allsquash :: automake error/timeout

# posixacl / setfacl residuals on tip (v9fs/test#28, not a chaos/diod issue)
t0013-v9fs-acl.t :: create a test file and setfacl -m u:root:r
t0013-v9fs-acl.t :: getfacl confirms ACL is set
t0013-v9fs-acl.t :: it is set on the server too
t0013-v9fs-acl.t :: getfacl confirms ACL is unset
t0013-v9fs-acl.t :: it is unset on the server too
t0013-v9fs-acl.t :: create a test directory and setfacl -d -m u:root:r
t0013-v9fs-acl.t :: exited with status 1
t0013-v9fs-acl :: automake error/timeout
Loading