Skip to content

Commit 3a9756a

Browse files
committed
docs: file verified parse_prd cwd-relative-state + paid-Perplexity drift bugs
1 parent 5ac4b54 commit 3a9756a

1 file changed

Lines changed: 31 additions & 0 deletions

File tree

ISSUES.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# Known issues
2+
3+
## 2026-07-12 — parse_prd unusable when server cwd ≠ project root; provider drift to paid Perplexity
4+
Verified by source read (this session, atlas-vault fleet run).
5+
6+
### A. parse_prd `[Errno 2] ... '.atlas-ai'` (Severity: HIGH)
7+
- `.atlas-ai` state paths are CWD-relative module constants: economy.py:32, fleet.py:17,76,
8+
pipeline.py:13-19, feedback.py:10, suggestions.py:20, reputation.py:39-40, task_state.py:401,
9+
mcp-server/server.py:394. No stateful op takes a project root.
10+
- The long-lived atlas-engine MCP server frequently runs with a DELETED cwd (a removed git
11+
worktree) → `Path('.atlas-ai').mkdir(...)` at lib.py:88 raises Errno 2 even though the parent
12+
mkdir exists. Reached via economy.py telemetry (economy.py:115) from NativeBackend.parse_prd
13+
(backend.py:351); error swallowed at mcp-server/server.py:221-222. preflight() also does
14+
os.chdir (pipeline.py:192), permanently moving the shared server off-root.
15+
- Telemetry writes AFTER the LLM call, so the failure burns paid tokens then discards the parse.
16+
- validate vs parse inconsistency: validation.py:39-41 resolves a relative prd_path against the
17+
server cwd (rejects a path valid from project root); parse reads abs fine (backend.py:359-363)
18+
but then fails on the cwd-relative WRITE.
19+
- FIX: anchor all state to an explicit project root (tool param / ATLAS_PROJECT_ROOT env / MCP
20+
roots); detect a dead cwd per call and fail self-diagnosing; make append_telemetry best-effort;
21+
replace preflight os.chdir with a plumbed root; echo the resolved absolute prd_path in errors.
22+
23+
### B. Research role silently uses paid Perplexity (Severity: MEDIUM)
24+
- providers.py:352-358: research_choice "real_api_if_key" + has_perplexity_key →
25+
_perplexity_research_model("sonar"), which writes NO baseURL → TaskMaster defaults to paid
26+
api.perplexity.ai even when PERPLEXITY_API_BASE_URL=localhost:8765 is set and the proxy is up.
27+
- Sticky: _correctable (providers.py:297-309) treats the existing paid role as a user choice and
28+
won't rewrite it.
29+
- FIX: prefer the local proxy when PERPLEXITY_API_BASE_URL is localhost:8765 (or make
30+
free_proxy_first the default); always include baseURL when writing a perplexity role; treat a
31+
paid-perplexity role as correctable when the free proxy is reachable.

0 commit comments

Comments
 (0)