Skip to content
Draft
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
9 changes: 4 additions & 5 deletions docs/ledgers/diod-upstream.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
# 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.
Disjoint ledger for the diod-currency / known-fail inventory (issue #4 / PR #3).
E0007 / E0008 / P0003 are copied into `evidence-map.md` and `proof-ledger.md`
after PR #2 landed. Keep this file as the live inventory; re-pin when HEAD
or `open_items` change.

## Evidence

Expand Down
4 changes: 3 additions & 1 deletion docs/ledgers/evidence-map.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@
| E0002 | Host edition | `docs/HOST.md` | working tree | GitHub surface map, non-claims, B/C triggers | Do not start B or C inside an unrelated product slice | Designed | | Revisit B/C only on named triggers |
| E0003 | v9fs kernel | https://github.com/v9fs/linux | tag `v7.2` = `8d3ae59288f1e7d58d76558a6ee96d533bc5019f` (2026-08-16) | Kernel in Image `kernel-v7.2` / floating `kernel-latest` | Mirror-only: no `.github` / CI in-tree; Image config enables `TMPFS_POSIX_ACL` but not `TMPFS_XATTR` | Mapped | #1 | Implementation slices must re-pin if Image moves off v7.2 |
| E0004 | v9fs harness | https://github.com/v9fs/test | run SHA `94b2182f54b30a073d893990db8f64e69f0d911a`; XFAIL list same on main `cce752431c359134fad9b0ae628bc9ecfefdc179` | `diod/xfail.txt`, mount-helper-v12, Harness CI | All regression CI lives here; docker `ghcr.io/v9fs/docker:latest` is floating | Mapped | #1 | Keep XFAIL until a slice removes rows with PASS |
| E0005 | Tip residuals | https://github.com/v9fs/test/issues/28 | Actions [32929975795](https://github.com/v9fs/test/actions/runs/32929975795) 2026-08-26; eval `unexpected: 0` | t0011 uid 65534 vs test `id -u`; t0013 `Txattrwalk` EOPNOTSUPP 95 | Two independent claims; XFAIL is not integration proof | Mapped | #1 | Open separate implementation slices after #1 lands |
| E0005 | Tip residuals | https://github.com/v9fs/test/issues/28 | Actions [32929975795](https://github.com/v9fs/test/actions/runs/32929975795) 2026-08-26; eval `unexpected: 0` | t0011 uid 65534 vs test `id -u`; t0013 `Txattrwalk` EOPNOTSUPP 95 | Two independent claims; XFAIL is not integration proof | Mapped | #1 (closed); impl [#5](https://github.com/v9fs/agent-team/issues/5), [#6](https://github.com/v9fs/agent-team/issues/6) | Implement t0011 (#5) then t0013 (#6); do not mix harness files |
| E0006 | diod | https://github.com/chaos/diod | `de51d1ee1bd5ccf1d8c16b96227c8bb03ec50106` (`master` 2026-06-23; still HEAD 2026-08-31) | t0011 `--allsquash` (default squashuser nobody); t0013 `setfacl` on export | Prepare clones `--depth 1` `DIOD_REF=master`; pin SHA in later slices | Mapped | #1 | Do not treat floating `master` as a pin in implementation PRs |
| 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 PR-only search is incomplete; enumerate by number. Harness clones `DIOD_REF=master` `--depth 1`. | Mapped | [#4](https://github.com/v9fs/agent-team/issues/4) / [PR #3](https://github.com/v9fs/agent-team/pull/3) | 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 | [#4](https://github.com/v9fs/agent-team/issues/4) | Land comment inventory on `v9fs/test` when that write scope is free |

Status vocabulary: `Unmapped`, `Mapped`, `Designed`, `Blocked`, `Superseded`.
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 | 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 |
| 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 `is:pr is:open` shows 3 PRs only; numbered GET found 14 open items (11 issues + 3 PRs). Highest-risk misses: #163, #164, #166. A PAT `issues?state=open` list can also return the 14; do not treat PR-only search as complete. | `docs/ledgers/diod-upstream-open-issues.json` | P0003 inventory must not trust search completeness | chaos/diod `open_issues_count` changes or HEAD moves | [#3](https://github.com/v9fs/agent-team/pull/3) / [#4](https://github.com/v9fs/agent-team/issues/4) |

Record rejected ideas and failed experiments when they prevent a later agent
from repeating the same work without new evidence.
3 changes: 2 additions & 1 deletion docs/ledgers/proof-ledger.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
| ID | Claim | Component/artifact | Evidence ids | Current level | Exact proof artifact or command | Explicit non-claims | GitHub issue/PR | Next gap |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| P0001 | Scaffold is a GitHub edition: required GitHub templates, Actions workflow, and host contracts exist; process remains 1:1 with the GitLab origin | `.github/`, `docs/HOST.md`, `scripts/check-scaffold.sh` | E0001, E0002 | Static | `scripts/check-scaffold.sh` and `git diff --check` | Dual-host adapters (B); GitHub-native review/CODEOWNERS/issue forms (C); live `gh` issue/PR loop against a remote | | Contract/Golden: create issue+draft PR from templates on a GitHub remote |
| P0002 | t0011 allsquash and t0013 ACL tip residuals are two independent mapped claims with pinned kernel/diod/harness versions | `v9fs/test` harness; `chaos/diod`; v9fs Image v7.2 | E0003, E0004, E0005, E0006 | Mapped | `docs/plans/1-map-tip-xfails.md`; run 32929975795; `scripts/check-scaffold.sh` | No kernel or diod fix; XFAIL is not integration proof; docker latest is floating | #1 | Create two implementation slices after independent review lands |
| P0002 | t0011 allsquash and t0013 ACL tip residuals are two independent mapped claims with pinned kernel/diod/harness versions | `v9fs/test` harness; `chaos/diod`; v9fs Image v7.2 | E0003, E0004, E0005, E0006 | Mapped | `docs/plans/1-map-tip-xfails.md`; run 32929975795; `scripts/check-scaffold.sh` | No kernel or diod fix; XFAIL is not integration proof; docker latest is floating | #1 (closed) | Integration on [#5](https://github.com/v9fs/agent-team/issues/5) t0011 then [#6](https://github.com/v9fs/agent-team/issues/6) t0013; do not mix |
| 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 | `docs/ledgers/diod-upstream.md`; `scripts/check-diod-upstream-inventory.sh` | E0007, E0008 | Mapped + Static | `scripts/check-diod-upstream-inventory.sh`; run [33511542559](https://github.com/v9fs/test/actions/runs/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 | [#4](https://github.com/v9fs/agent-team/issues/4) / [PR #3](https://github.com/v9fs/agent-team/pull/3) | Product PR on `v9fs/test` to copy comments into `diod/xfail.txt`; optional `DIOD_REF` SHA pin |

Use the levels selected from `docs/PROOF_MODEL.md`. A higher level requires an
actual artifact, not only a planned test.
2 changes: 1 addition & 1 deletion docs/ledgers/risk-ledger.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +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 |
| 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 | [#3](https://github.com/v9fs/agent-team/pull/3) / [#4](https://github.com/v9fs/agent-team/issues/4) |

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.
14 changes: 7 additions & 7 deletions docs/plans/1-map-tip-xfails.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@
`94b2182f54b30a073d893990db8f64e69f0d911a`
- Target component/API/artifact: evidence map + proof plan (no product code)
- GitHub milestone: M0 - Bootstrap
- GitHub issue: https://github.com/v9fs/agent-team/issues/1
- GitHub PR: to fill
- GitHub issue: https://github.com/v9fs/agent-team/issues/1 (closed)
- GitHub PR: https://github.com/v9fs/agent-team/pull/2 (merged)
- Branch: `scaffold/1-map-tip-xfails`
- Authority level/exceptions: A2; no merge to `v9fs/linux`; no `.github` on linux
- Owner: evidence mapper (this slice)
Expand All @@ -36,8 +36,8 @@
| Rank | GitHub issue | Outcome | Dependency/proof boundary | Why next | Stop/defer rule |
| --- | --- | --- | --- | --- | --- |
| 1 | agent-team#1 | Pins + two independent claims | Unmapped → Mapped | M0; current next-action | Do not implement |
| 2 | (create after #1 lands) | t0011 squashuser vs assertion | Mapped → Integration on t0011 only | Independent of ACL | Stop if `--squashuser` trial is not decisive |
| 3 | (create after #1 lands) | t0013 ACL xattr / TMPFS_XATTR | Mapped → Integration on t0013 only | Independent of squash | Stop if in-guest local `/tmp` setfacl is not EOPNOTSUPP and not PASS |
| 2 | [#5](https://github.com/v9fs/agent-team/issues/5) | t0011 squashuser vs assertion | Mapped → Integration on t0011 only | Independent of ACL | Stop if `--squashuser` trial is not decisive |
| 3 | [#6](https://github.com/v9fs/agent-team/issues/6) | t0013 ACL xattr / TMPFS_XATTR | Mapped → Integration on t0013 only | Independent of squash | Stop if in-guest local `/tmp` setfacl is not EOPNOTSUPP and not PASS |

## Evidence Map

Expand Down Expand Up @@ -103,6 +103,6 @@ mounts and the client issues `Txattrwalk`.
- [x] Evidence, authority, dependencies, and write scopes are explicit.
- [x] Target behavior and non-claims are bounded.
- [x] Proof rejects the named plausible false positive (one-bug mapping).
- [ ] Required review and approval are complete.
- [x] Follow-ups have bounded dispositions (two later slices, not opened yet).
- [ ] GitHub and durable evidence agree after landing.
- [x] Required review and approval are complete.
- [x] Follow-ups have bounded dispositions ([#5](https://github.com/v9fs/agent-team/issues/5), [#6](https://github.com/v9fs/agent-team/issues/6)).
- [x] GitHub and durable evidence agree after landing.
4 changes: 2 additions & 2 deletions docs/plans/diod-upstream-known-fail.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@
new XFAIL FAIL rows; t0011/t0013 remain `v9fs/test#28` (PR #2); Debian
packaged diod is not in the CI matrix; `diod-9p2000.L` not claimed
- Required dependencies: public chaos/diod + v9fs/test; run 33511542559 logs
- Deferred dependencies: product PR on `v9fs/test`; copy E0007/P0003 into
main ledgers after PR #2 lands; optional `DIOD_REF` SHA pin
- Deferred dependencies: product PR on `v9fs/test` (comment-only `diod/xfail.txt`);
optional `DIOD_REF` SHA pin. E0007/P0003 copy into main ledgers is this closeout.

## Backlog Context

Expand Down
9 changes: 5 additions & 4 deletions docs/project-formulation.md
Original file line number Diff line number Diff line change
Expand Up @@ -105,8 +105,9 @@ Authority levels:
| Rank | Issue | Outcome | Evidence boundary | Proof promotion | Predecessor | Unblocks |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | [#1](https://github.com/v9fs/agent-team/issues/1) | Pin t0011/t0013 as two independent claims | E0003–E0006; run 32929975795 | Unmapped → Mapped | — | Two implementation slices |
| 2 | (open after #1 lands) | t0011: squashuser vs ownership assertion | E0005/E0006 t0011 only | Mapped → Integration | 1 | Drop matching XFAIL rows |
| 3 | (open after #1 lands) | t0013: ACL xattr / `TMPFS_XATTR` vs 9p path | E0003/E0005 t0013 only | Mapped → Integration | 1 | Drop matching XFAIL rows |
| 2 | [#5](https://github.com/v9fs/agent-team/issues/5) | t0011: squashuser vs ownership assertion | E0005/E0006 t0011 only | Mapped → Integration | 1 (closed) | Drop matching XFAIL rows |
| 3 | [#6](https://github.com/v9fs/agent-team/issues/6) | t0013: ACL xattr / `TMPFS_XATTR` vs 9p path | E0003/E0005 t0013 only | Mapped → Integration | 1 (closed) | Drop matching XFAIL rows |

Execute only the first slice before deciding whether more process, telemetry, or
parallelism is justified.
Rank 1 mapping has landed (#1 / PR #2). Implementation is split: #5 (t0011)
then #6 (t0013). Do not run two implementers on the same `v9fs/test` harness
files. Do not add process, telemetry, or parallelism to justify more work.