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
7 changes: 4 additions & 3 deletions docs/ledgers/evidence-map.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| E0001 | Host edition | This repository's GitLab-origin scaffold | `2b581184d08daed1d0f0b9611fbafbaa0f24e278` | `.gitlab/`, `.gitlab-ci.yml`, GitLab nouns in contracts | GitHub edition must keep process identical so Options B/C remain file splits | Mapped | | Keep GitLab tree recoverable from this commit; do not mix hosts in-tree |
| 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 | pin SHA per slice | Kernel v9fs paths; issues as product tracker | Mirror-only: no `.github` / CI in-tree; rebases on torvalds/linux | Mapped | | Pin commit and issue for the active slice |
| E0004 | v9fs harness | https://github.com/v9fs/test | pin SHA and Actions run per slice | Sync, Image publish, suites, wiki, JSON/diff artifacts | All regression CI lives here; linux is checkout source | Mapped | | Pin workflow, suite, and artifact for the claim |
| E0005 | Tip residuals | https://github.com/v9fs/test/issues/28 | open issue; pin run/log in bootstrap | t0011 allsquash ownership; t0013 POSIX ACL xattrs on guest `/tmp` | May be diod, v9fs, or harness expectation; currently XFAIL | Unmapped | bootstrap issue | Pin kernel/diod/harness versions and discriminating FAIL |
| 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 |
| 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 |

Status vocabulary: `Unmapped`, `Mapped`, `Designed`, `Blocked`, `Superseded`.
2 changes: 1 addition & 1 deletion docs/ledgers/proof-ledger.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
| 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 mapped to a pinned kernel/diod/harness boundary with a discriminating proof plan | `v9fs/test` harness; diod; v9fs | E0003, E0004, E0005 | Unmapped | Bootstrap evidence map; later named suite vs XFAIL | No kernel or diod fix claimed yet; XFAIL is not integration proof | bootstrap issue | Select the first bounded proof promotion |
| 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 |

Use the levels selected from `docs/PROOF_MODEL.md`. A higher level requires an
actual artifact, not only a planned test.
108 changes: 108 additions & 0 deletions docs/plans/1-map-tip-xfails.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
# Work Slice Plan

## Summary

- Slice: Map t0011 allsquash and t0013 ACL tip residuals as two independent
claims with pinned kernel, diod, and harness versions
- Human outcome: an implementer can start either residual without reconstructing
this diagnosis from chat
- Evidence version: Harness CI run 32929975795; kernel Image `kernel-latest` =
v7.2 (`8d3ae59288f1e7d58d76558a6ee96d533bc5019f`); diod
`de51d1ee1bd5ccf1d8c16b96227c8bb03ec50106`; harness
`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
- Branch: `scaffold/1-map-tip-xfails`
- Authority level/exceptions: A2; no merge to `v9fs/linux`; no `.github` on linux
- Owner: evidence mapper (this slice)
- Independent reviewer: distinct from mapper; review the split and pins
- Date: 2026-08-31

## Scope

- In scope: pin versions; separate t0011 vs t0013; name discriminating
observations; record non-claims; name next implementation slices
- Explicit non-claims: no kernel, diod, or harness code change; XFAIL remaining
is not integration proof; `ghcr.io/v9fs/docker:latest` is floating
- Required dependencies: run 32929975795 logs/artifacts already diagnosed in
`01-projects/v9fs/diod-tip-xfails-allsquash-acl.md`
- Deferred dependencies: implementation PRs in `v9fs/test` and/or `chaos/diod`
and/or `v9fs/linux` after this mapping lands

## Backlog Context

| 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 |

## Evidence Map

| Source/spec/runtime/data | Version | Purpose | Constraint | Target |
| --- | --- | --- | --- | --- |
| `v9fs/linux` tag `v7.2` | `8d3ae59288f1e7d58d76558a6ee96d533bc5019f` (2026-08-16, "Linux 7.2") | Kernel in Image `kernel-v7.2` / `kernel-latest` | Mirror-only; no `.github` | E0003 |
| `v9fs/test` release `kernel-latest` | notes: "currently v7.2 / kernel-v7.2"; published 2026-08-24 | Floating Image used by Harness CI on push | Later tip Images may differ | E0004 |
| `v9fs/test` harness at run | `94b2182f54b30a073d893990db8f64e69f0d911a` (PR #26) | XFAIL eval, mount helper v12, `diod/xfail.txt` | Main later moved to `cce75243` (docs #27 only) | E0004 |
| Actions run | [32929975795](https://github.com/v9fs/test/actions/runs/32929975795) 2026-08-26 | Discriminating logs: uid 65534 vs EOPNOTSUPP 95 | `unexpected: 0`; XFAIL not a harness regression | E0005 |
| `chaos/diod` | `de51d1ee1bd5ccf1d8c16b96227c8bb03ec50106` (`master` since 2026-06-23; still HEAD 2026-08-31) | t0011/t0013 source; `--allsquash` default squashuser nobody | Prepare clones `--depth 1` `DIOD_REF=master` | E0006 |
| Publish config | `linux-kernel-publish.yml` at harness SHA | `TMPFS_POSIX_ACL` on; `TMPFS_XATTR` not set | Guest `/tmp` may lack ACL xattrs | E0004 |
| Product tracker | [v9fs/test#28](https://github.com/v9fs/test/issues/28) | Human issue for residuals | Keep XFAIL until implementation slices | E0005 |

## Design

- Public interface: none (ledger + issue contract)
- Ownership/state boundaries: two residuals, two later write scopes
- Invariants: linux stays mirror-only; all CI stays in `v9fs/test`
- Failure and rollback handling: leave `diod/xfail.txt` until a slice removes rows with a PASS
- Compatibility/migration behavior: n/a
- Observability: named Actions run + diod logs in `diod-regression-logs`

## Proof Plan

| Level | Command or artifact | Expected discriminating result |
| --- | --- | --- |
| Static | `scripts/check-scaffold.sh` | Scaffold still valid after ledger edit |
| Mapped | This plan + E0003–E0006 pins | Another agent can restate both claims from git |
| Unit | not in this slice | |
| Contract/Golden | not in this slice | |
| Integration | later: named t0011 or t0013 without XFAIL | PASS for that test only |
| Operational | not claimed | |

Plausible wrong mechanism and the observation that rejects it:

> The mapping would fail if t0011 and t0013 were one harness bug, because the
> same run shows squash working (export uid 65534) while ACL walks return
> EOPNOTSUPP 95 with no `Txattrcreate`. A squashuser-only change cannot make
> t0013 PASS.

t0011 later discriminator: `--squashuser=$(id -un)` makes `exp/` ownership
match `id -u`; asserting 65534 would also pass if the test is what is wrong.
"v9fs dropped squash" is rejected by `Rgetattr uid 65534` and green t0012.

t0013 later discriminator: in-guest `setfacl` on a local `/tmp` file (not 9p).
EOPNOTSUPP ⇒ export fs / `TMPFS_XATTR`. PASS on local `/tmp` ⇒ 9p/diod xattr
path. "posixacl mount option not parsed" is rejected because `-o posixacl`
mounts and the client issues `Txattrwalk`.

## Team Orchestration

| Role | Agent/thread | GitHub issue | Read scope | Write scope | Required output | Integration order |
| --- | --- | --- | --- | --- | --- | --- |
| Orchestrator | ericvh | #1 | both product repos | workflow state | ordered integration | first/last |
| Evidence mapper | this slice | #1 | linux/test/diod/CI | this forge ledgers | evidence/proof map | before code |
| Implementer | none yet | #1 | | none (no product code) | mapping only | |
| Independent reviewer | distinct | #1 | full PR | review note only | decision/findings | after mapping PR |
| CI/proof owner | v9fs/test | #1 | pipeline/proof | none this slice | run 32929975795 | already landed |
| State closer | after review | #1 | GitHub + records | state rows | landed reconciliation | last |

## Exit Criteria

- [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.
6 changes: 3 additions & 3 deletions docs/project-formulation.md
Original file line number Diff line number Diff line change
Expand Up @@ -104,9 +104,9 @@ Authority levels:

| Rank | Issue | Outcome | Evidence boundary | Proof promotion | Predecessor | Unblocks |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | M0 bootstrap | Pin t0011/t0013 tip residuals (`v9fs/test#28`) across diod, v9fs, and harness; named proof plan and non-claims | `v9fs/test#28`, harness logs, diod/v9fs tip behavior | Unmapped → Mapped | — | Implementation slice |
| 2 | (planned) | Land the mapped residual as a kernel, diod, and/or harness change with a non-XFAIL assertion | Pins from slice 1 | Mapped → Integration | 1 | Relative/nightly compare |
| 3 | (horizon) | Next P0 from Test Infrastructure or a linux bug with a harness reproduction | Named linux/test issues | Mapped before code | 2 | Feature slices |
| 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 |

Execute only the first slice before deciding whether more process, telemetry, or
parallelism is justified.