| """Taskforces (Β§18): creation, README updates, contributions, discovery.""" |
| from __future__ import annotations |
|
|
| from app.frontmatter import serialise |
| from fakes import seed_agent |
|
|
|
|
| AGENT = "agent-1" |
| OTHER = "agent-2" |
|
|
|
|
| def _bucket(agent_id: str) -> str: |
| return f"test-org/test-{agent_id}" |
|
|
|
|
| def _source(agent_id: str, path: str) -> str: |
| return f"hf://buckets/{_bucket(agent_id)}/{path}" |
|
|
|
|
| def create_tf( |
| env, |
| name: str = "kernel-research", |
| agent: str = AGENT, |
| body: str = "# Kernel Research\n\nMaking attention kernels go fast.", |
| ): |
| return env.client.post( |
| "/v1/taskforces", json={"name": name, "agent_id": agent, "body": body} |
| ) |
|
|
|
|
| |
|
|
|
|
| def test_create_raw_writes_readme(env): |
| seed_agent(env.hub, AGENT) |
| r = create_tf(env) |
| assert r.status_code == 201, r.text |
| assert r.json() == { |
| "name": "kernel-research", |
| "via": "raw", |
| "path": "taskforces/kernel-research/README.md", |
| "created": True, |
| } |
|
|
| readme = env.hub.read_central_text("taskforces/kernel-research/README.md") |
| assert "creator: agent-1" in readme |
| assert "taskforce: kernel-research" in readme |
| assert "Making attention kernels go fast." in readme |
|
|
| |
| |
| msgs = env.client.get("/v1/messages").json() |
| assert msgs["count"] == 0 |
|
|
|
|
| def test_create_bucket_variant_preserves_client_frontmatter(env): |
| seed_agent(env.hub, AGENT) |
| env.hub.seed( |
| "tf/readme.md", |
| serialise({"title": "Kernel Research", "creator": "spoofed"}, "All things kernels."), |
| bucket=_bucket(AGENT), |
| ) |
| r = env.client.post( |
| "/v1/taskforces", |
| json={"name": "kernel-research", "source": _source(AGENT, "tf/readme.md")}, |
| ) |
| assert r.status_code == 201, r.text |
| assert r.json()["via"] == "bucket" |
| readme = env.hub.read_central_text("taskforces/kernel-research/README.md") |
| assert "title: Kernel Research" in readme |
| assert "creator: agent-1" in readme |
| assert "spoofed" not in readme |
|
|
|
|
| def test_create_requires_registration(env): |
| r = create_tf(env) |
| assert r.status_code == 404 |
| assert r.json()["error"]["code"] == "NOT_REGISTERED" |
|
|
|
|
| def test_create_rejects_invalid_name(env): |
| seed_agent(env.hub, AGENT) |
| r = create_tf(env, name="-bad-") |
| assert r.status_code == 400 |
| assert r.json()["error"]["code"] == "INVALID_PATH" |
|
|
|
|
| def test_create_conflict_for_non_creator(env): |
| seed_agent(env.hub, AGENT) |
| seed_agent(env.hub, OTHER) |
| assert create_tf(env).status_code == 201 |
| r = create_tf(env, agent=OTHER, body="mine now") |
| assert r.status_code == 409 |
| assert r.json()["error"]["code"] == "TASKFORCE_EXISTS" |
|
|
|
|
| def test_creator_updates_readme(env): |
| seed_agent(env.hub, AGENT) |
| create_tf(env) |
| first = env.client.get("/v1/taskforces/kernel-research").json() |
|
|
| r = create_tf(env, body="# Kernel Research\n\nNow with a roadmap.") |
| assert r.status_code == 200, r.text |
| assert r.json()["created"] is False |
|
|
| detail = env.client.get("/v1/taskforces/kernel-research").json() |
| assert detail["created"] == first["created"] |
| assert detail["updated"] is not None |
| assert "roadmap" in detail["readme"]["body"] |
|
|
|
|
| |
|
|
|
|
| def test_raw_note(env): |
| seed_agent(env.hub, AGENT) |
| create_tf(env) |
| r = env.client.post( |
| "/v1/taskforces/kernel-research/files", |
| json={"agent_id": AGENT, "body": "Profiled the baseline: 40% in attention."}, |
| ) |
| assert r.status_code == 201, r.text |
| data = r.json() |
| assert data["kind"] == "note" |
| assert data["filename"].endswith("_agent-1.md") |
|
|
| notes = env.client.get( |
| "/v1/taskforces/kernel-research/notes?expand=true" |
| ).json() |
| assert notes["matched"] == 1 |
| fm = notes["items"][0]["frontmatter"] |
| assert fm["taskforce"] == "kernel-research" |
| assert fm["type"] == "note" |
| assert fm["via"] == "raw" |
|
|
|
|
| def test_bucket_note_dedup(env): |
| seed_agent(env.hub, AGENT) |
| create_tf(env) |
| env.hub.seed("notes/profile.md", "kernel profiling notes", bucket=_bucket(AGENT)) |
| src = _source(AGENT, "notes/profile.md") |
| first = env.client.post( |
| "/v1/taskforces/kernel-research/files", json={"source": src} |
| ) |
| assert first.status_code == 201, first.text |
| assert first.json()["via"] == "bucket" |
| second = env.client.post( |
| "/v1/taskforces/kernel-research/files", json={"source": src} |
| ) |
| assert second.status_code == 409 |
| assert second.json()["error"]["code"] == "ALREADY_PROMOTED" |
|
|
|
|
| def test_named_file_roundtrip(env): |
| seed_agent(env.hub, AGENT) |
| create_tf(env) |
| env.hub.seed("out/profile.json", '{"tps": 123}', bucket=_bucket(AGENT)) |
| r = env.client.post( |
| "/v1/taskforces/kernel-research/files", |
| json={ |
| "source": _source(AGENT, "out/profile.json"), |
| "dest_path": "profiles/flash_attn_agent-1.json", |
| }, |
| ) |
| assert r.status_code == 201, r.text |
| assert r.json() == { |
| "kind": "file", |
| "filename": "profiles/flash_attn_agent-1.json", |
| "via": "bucket", |
| "path": "taskforces/kernel-research/profiles/flash_attn_agent-1.json", |
| } |
|
|
| files = env.client.get("/v1/taskforces/kernel-research/files").json() |
| paths = {f["path"] for f in files["items"]} |
| assert paths == {"README.md", "profiles/flash_attn_agent-1.json"} |
|
|
| raw = env.client.get( |
| "/v1/taskforces/kernel-research/files/profiles/flash_attn_agent-1.json" |
| ) |
| assert raw.status_code == 200 |
| assert raw.content == b'{"tps": 123}' |
| assert raw.headers["content-type"].startswith("application/json") |
|
|
| |
| notes = env.client.get("/v1/taskforces/kernel-research/notes").json() |
| assert notes["matched"] == 0 |
|
|
|
|
| def test_named_md_file_appears_in_notes_view(env): |
| seed_agent(env.hub, AGENT) |
| create_tf(env) |
| env.hub.seed( |
| "out/survey.md", |
| serialise({"type": "survey"}, "Long-form kernel survey."), |
| bucket=_bucket(AGENT), |
| ) |
| r = env.client.post( |
| "/v1/taskforces/kernel-research/files", |
| json={"source": _source(AGENT, "out/survey.md"), "dest_path": "survey_agent-1.md"}, |
| ) |
| assert r.status_code == 201, r.text |
| notes = env.client.get( |
| "/v1/taskforces/kernel-research/notes?expand=true&q=survey" |
| ).json() |
| assert notes["matched"] == 1 |
| assert notes["items"][0]["filename"] == "survey_agent-1.md" |
|
|
|
|
| def test_named_file_requires_marker(env): |
| seed_agent(env.hub, AGENT) |
| create_tf(env) |
| env.hub.seed("out/profile.json", "{}", bucket=_bucket(AGENT)) |
| r = env.client.post( |
| "/v1/taskforces/kernel-research/files", |
| json={"source": _source(AGENT, "out/profile.json"), "dest_path": "profile.json"}, |
| ) |
| assert r.status_code == 400 |
| assert "_agent-1" in r.json()["error"]["message"] |
|
|
|
|
| def test_named_file_readme_leaf_reserved(env): |
| seed_agent(env.hub, AGENT) |
| create_tf(env) |
| env.hub.seed("out/readme.md", "takeover", bucket=_bucket(AGENT)) |
| r = env.client.post( |
| "/v1/taskforces/kernel-research/files", |
| json={ |
| "source": _source(AGENT, "out/readme.md"), |
| "dest_path": "docs_agent-1/README.md", |
| }, |
| ) |
| assert r.status_code == 400 |
| assert "reserved" in r.json()["error"]["message"] |
|
|
|
|
| def test_contribute_to_unknown_taskforce(env): |
| seed_agent(env.hub, AGENT) |
| r = env.client.post( |
| "/v1/taskforces/nope/files", json={"agent_id": AGENT, "body": "hello?"} |
| ) |
| assert r.status_code == 404 |
| assert r.json()["error"]["code"] == "TASKFORCE_NOT_FOUND" |
|
|
|
|
| def test_contribution_requires_registration(env): |
| seed_agent(env.hub, AGENT) |
| create_tf(env) |
| r = env.client.post( |
| "/v1/taskforces/kernel-research/files", |
| json={"agent_id": "ghost", "body": "drive-by"}, |
| ) |
| assert r.status_code == 404 |
| assert r.json()["error"]["code"] == "NOT_REGISTERED" |
|
|
|
|
| |
|
|
|
|
| def test_list_taskforces(env): |
| seed_agent(env.hub, AGENT) |
| seed_agent(env.hub, OTHER) |
| create_tf(env, name="kernel-research") |
| create_tf(env, name="eval-tooling", agent=OTHER, body="# Evals\n\nBetter eval harnesses.") |
| env.client.post( |
| "/v1/taskforces/kernel-research/files", |
| json={"agent_id": OTHER, "body": "joining in"}, |
| ) |
|
|
| listing = env.client.get("/v1/taskforces").json() |
| assert listing["count"] == 2 |
| assert listing["matched"] == 2 |
| by_name = {t["name"]: t for t in listing["items"]} |
| |
| assert listing["items"][0]["name"] == "kernel-research" |
| kr = by_name["kernel-research"] |
| assert kr["creator"] == AGENT |
| assert kr["contributors"] == [AGENT, OTHER] |
| assert kr["note_count"] == 1 |
| assert kr["last_activity"] is not None |
| assert "kernels" in kr["readme_excerpt"] |
| et = by_name["eval-tooling"] |
| assert et["contributors"] == [OTHER] |
| assert et["last_activity"] is None |
|
|
| filtered = env.client.get("/v1/taskforces?q=eval harnesses").json() |
| assert filtered["matched"] == 1 |
| assert filtered["items"][0]["name"] == "eval-tooling" |
|
|
|
|
| def test_detail(env): |
| seed_agent(env.hub, AGENT) |
| seed_agent(env.hub, OTHER) |
| create_tf(env) |
| env.client.post( |
| "/v1/taskforces/kernel-research/files", |
| json={"agent_id": OTHER, "body": "fused kernel draft attached"}, |
| ) |
|
|
| detail = env.client.get("/v1/taskforces/kernel-research").json() |
| assert detail["name"] == "kernel-research" |
| assert detail["creator"] == AGENT |
| assert detail["contributors"] == [AGENT, OTHER] |
| assert detail["note_count"] == 1 |
| assert detail["file_count"] == 2 |
| assert detail["readme"]["body"].startswith("# Kernel Research") |
| assert detail["recent_notes"][0]["body"] == "fused kernel draft attached" |
|
|
|
|
| def test_detail_unknown_taskforce(env): |
| r = env.client.get("/v1/taskforces/nope") |
| assert r.status_code == 404 |
| assert r.json()["error"]["code"] == "TASKFORCE_NOT_FOUND" |
|
|
|
|
| def test_notes_grammar_filters(env): |
| seed_agent(env.hub, AGENT) |
| seed_agent(env.hub, OTHER) |
| create_tf(env) |
| for agent, body in ((AGENT, "first note"), (OTHER, "second note")): |
| env.client.post( |
| "/v1/taskforces/kernel-research/files", |
| json={"agent_id": agent, "body": body}, |
| ) |
| notes = env.client.get( |
| f"/v1/taskforces/kernel-research/notes?agent={OTHER}&expand=true" |
| ).json() |
| assert notes["matched"] == 1 |
| assert notes["items"][0]["body"] == "second note" |
|
|
|
|
| def test_raw_file_get_missing(env): |
| seed_agent(env.hub, AGENT) |
| create_tf(env) |
| r = env.client.get("/v1/taskforces/kernel-research/files/nope.txt") |
| assert r.status_code == 404 |
| assert r.json()["error"]["code"] == "NOT_FOUND" |
|
|
|
|
| def test_digest_includes_taskforces(env): |
| seed_agent(env.hub, AGENT) |
| create_tf(env) |
| digest = env.client.get("/v1/digest").json() |
| assert digest["taskforces"]["count"] == 1 |
| assert digest["taskforces"]["newest"] == ["kernel-research"] |
|
|