diff --git a/docs/ledgers/diod-upstream.md b/docs/ledgers/diod-upstream.md index 8b13580..7deb0f9 100644 --- a/docs/ledgers/diod-upstream.md +++ b/docs/ledgers/diod-upstream.md @@ -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 diff --git a/docs/ledgers/evidence-map.md b/docs/ledgers/evidence-map.md index ea795df..677aed4 100644 --- a/docs/ledgers/evidence-map.md +++ b/docs/ledgers/evidence-map.md @@ -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`. diff --git a/docs/ledgers/experiment-log.md b/docs/ledgers/experiment-log.md index 00c8be9..a481af9 100644 --- a/docs/ledgers/experiment-log.md +++ b/docs/ledgers/experiment-log.md @@ -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. diff --git a/docs/ledgers/proof-ledger.md b/docs/ledgers/proof-ledger.md index 2a2e97d..a3881e5 100644 --- a/docs/ledgers/proof-ledger.md +++ b/docs/ledgers/proof-ledger.md @@ -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. diff --git a/docs/ledgers/risk-ledger.md b/docs/ledgers/risk-ledger.md index 62f7f98..dc5d1f4 100644 --- a/docs/ledgers/risk-ledger.md +++ b/docs/ledgers/risk-ledger.md @@ -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. diff --git a/docs/plans/1-map-tip-xfails.md b/docs/plans/1-map-tip-xfails.md index e176fee..a644ca5 100644 --- a/docs/plans/1-map-tip-xfails.md +++ b/docs/plans/1-map-tip-xfails.md @@ -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) @@ -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 @@ -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. diff --git a/docs/plans/diod-upstream-known-fail.md b/docs/plans/diod-upstream-known-fail.md index 29d0157..31008df 100644 --- a/docs/plans/diod-upstream-known-fail.md +++ b/docs/plans/diod-upstream-known-fail.md @@ -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 diff --git a/docs/project-formulation.md b/docs/project-formulation.md index 7f0eadd..4c25402 100644 --- a/docs/project-formulation.md +++ b/docs/project-formulation.md @@ -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.