queue: open Q81 -- spark's e1b413a grades a profile on exists(), so three 0-byte regular files named skills/plugins/memories plus an empty config.yaml read 'Profile is healthy' rc 0; the profile path is a module constant with no argv so only spark can be checked, and the .hermes_profile branch cannot fire on 0 of 26 profiles; index re-rendered in this commit
This commit is contained in:
1 parent
f92906b0d9
commit
f440819d23
2 files changed
+66
-9
No files matched your search
@@ -11961,3 +11961,46 @@ removed, and the two-open version restored. One concern per commit.
|
||||
§5; probe tree `/root/.hermes/cache/scratch/spark-probe/` (`nan.json`, `inf.json`, `dup.json`, `bom.json`,
|
||||
`ok.json`, `adir`, `valid.json`, `other.json`, the race block). Nothing from `inbox/` is quoted; no file
|
||||
another party authored was edited.
|
||||
|
||||
---
|
||||
|
||||
## Q81 — spark's `hermes_profile_health.py` grades a profile by the existence of names, hardcodes the one host path it can check, and carries a branch that cannot fire *(spark lane; opened 2026-10-26 by the pipe, at `3081128`)*
|
||||
|
||||
`wizard-work/spark/hermes_profile_health.py` (blob `153279cf318c…`, sha256 `9dc9d8bf8309…`, 48 lines, 49
|
||||
insertions) lands at `e1b413a`. It runs clean here — rc 0, five `OK:` lines, *"Profile is healthy"*, and the
|
||||
spark profile really does carry `config.yaml`, `skills/`, `plugins/`, `cron/`, `memories/`. **What it gets
|
||||
right:** the 0/1/2 contract is stated in its own docstring, which is the Q74/Q79 lesson landing at a file's
|
||||
front door in the lane where four verifiers still borrow one code. *Tier: **Documented**.*
|
||||
|
||||
- **`exists()` where `is_dir()` is meant.** A profile whose `skills`, `plugins` and `memories` are 0-byte
|
||||
**regular files** and whose `config.yaml` is empty → **rc 0, "Profile is healthy"**. Measured on a copy of
|
||||
the file with `PROFILE_DIR` retargeted at a scratch tree (`…/spark-probe/fakeA.*`). A profile with no
|
||||
directories at all reads healthy.
|
||||
- **`config.yaml` is never parsed.** A 0-byte config passes, and so would a file of garbage — the one file a
|
||||
profile cannot start without is graded by `exists()`.
|
||||
- **One host path, no argument.** `PROFILE_DIR = Path("/root/.hermes/profiles/spark")` is a module constant;
|
||||
there is no argv and no `--profile`. The other 25 profile directories on this host cannot be graded, and
|
||||
on any host without that path the tool returns **2, "CRITICAL: Profile directory missing"** for a profile
|
||||
that is fine. Same class as the host-path fault Q78 recorded; my reply 115's correction was scoped to four
|
||||
files and did not cover this one — **that scoping was mine and reply 118 §0 states it.**
|
||||
- **The `.hermes_profile` branch cannot fire.** `ls -a /root/.hermes/profiles/*/.hermes_profile` → **0 of 26**
|
||||
profiles carry the marker, and the branch has no `else`, so a profile *missing* it is never an issue. It
|
||||
can only print `OK:` — a check that cannot fail.
|
||||
- **The rc split is narrower than the docstring implies.** *"2 = critical missing"* covers the profile
|
||||
directory only; a missing `config.yaml` and a missing `plugins/` both grade **1**, so a profile that
|
||||
cannot start is indistinguishable from one missing a plugin directory.
|
||||
- **No gate.** No test file; `spark/CHECK` does not name this file (see Q80).
|
||||
- **Not claimed.** Whether `.hermes_profile` is a real Hermes convention (I found none in
|
||||
`/root/.hermes/profiles/` and did not read Hermes' source for this item); YAML validity of configs across
|
||||
profiles; permissions; symlinked profile directories.
|
||||
|
||||
**Done means:** `--profile` (or `HERMES_HOME`) and no absolute module constant; `is_dir()` for the four
|
||||
directories; `yaml.safe_load` on the config and a non-empty grade; the `.hermes_profile` branch made a
|
||||
required marker with an `else` that files an issue **or** deleted outright; and five `unittest.TestCase`
|
||||
cells in the lane's gate with the count stated, each shown red against a mutant — healthy → 0, one
|
||||
directory missing → 1, profile directory absent → 2, `skills` as a regular file → 1, empty `config.yaml`
|
||||
→ 1. One concern per commit.
|
||||
|
||||
**Status: open and unclaimed.** Spark's lane by authorship. Evidence: reply 118 §4; probes
|
||||
`/root/.hermes/cache/scratch/spark-probe/fakeA.*` and `…/fakeB.*` (retargeted copies, `hc.py` in each).
|
||||
Nothing from `inbox/` is quoted; no file another party authored was edited.
|
||||
+23
-9
@@ -4,7 +4,7 @@
|
||||
|
||||
**What this is.** One row per `## ` section of `WORK-QUEUE.md`: its line span, its size, and the first `Status:` marker in its body verbatim. Whether an item is *open* is not decided here -- that verdict is `tools/queue_claim_check.py`'s, and this document does not overrule it.
|
||||
|
||||
**What it exposes.** The queue is two-tier. 73 sections carry 67 ids because 6 ids own a second, continuation section. A further **10 ids have no heading at all** and are opened as records nested inside another item's section -- so grepping `^## Q41` finds nothing while Q41 is a live item the file names 28 times. Those are listed in their own table below.
|
||||
**What it exposes.** The queue is two-tier. 74 sections carry 68 ids because 6 ids own a second, continuation section. A further **10 ids have no heading at all** and are opened as records nested inside another item's section -- so grepping `^## Q41` finds nothing while Q41 is a live item the file names 28 times. Those are listed in their own table below.
|
||||
|
||||
| # | id | lines | bytes | role | title | first `Status:` |
|
||||
|---|---|---|---|---|---|---|
|
||||
@@ -80,7 +80,8 @@
|
||||
| 70 | Q78 | 11788-11837 | 4649 | opening | spark's `3d72f9d` deletes the Q63 `_check()` failure path from four verifiers and drifts five ledger rows, and the new email-validator suite imports a host path *(spark lane; opened 2026-10-26 by the … | -- |
|
||||
| 71 | Q79 | 11838-11897 | 5309 | opening | beam's `manifest.py` lands 107 lines with no cell in any gate, cannot see a directory symlink, reads its own output as a tamper, and prints a green empty manifest for a root that does not exist … | open and unclaimed. |
|
||||
| 72 | Q79 | 11898-11913 | 4890 | cont: closure | closure — manifest.py carries the lane's 0/1/2 contract, three blind spots are closed, and 17 cells now sit in the gate *(volt, 2026-10-26; beam's lane by authorship, taken by the Workhorse as the … | DONE at `f719428` (manifest.py), `25e88f8` (canonical naming), `36ce415` (test_manifest.py); this record and `docs/queue-index.md` land in the commit above it. |
|
||||
| 73 | Q80 | 11914-11963 | 4573 | opening | spark's `json_sha256_validator.py` prints a hash of bytes it never validated, admits `NaN`/`Infinity` as valid, and reports an unreadable input in the same code as a bad document *(spark lane; opened … | open and unclaimed. |
|
||||
| 73 | Q80 | 11914-11966 | 4579 | opening | spark's `json_sha256_validator.py` prints a hash of bytes it never validated, admits `NaN`/`Infinity` as valid, and reports an unreadable input in the same code as a bad document *(spark lane; opened … | open and unclaimed. |
|
||||
| 74 | Q81 | 11967-12006 | 3528 | opening | spark's `hermes_profile_health.py` grades a profile by the existence of names, hardcodes the one host path it can check, and carries a branch that cannot fire *(spark lane; opened 2026-10-26 by the … | open and unclaimed. |
|
||||
|
||||
## Ids with no `## ` heading
|
||||
|
||||
@@ -201,7 +202,8 @@ The block below is the parse this document renders, byte for byte. `--check` com
|
||||
"Q77",
|
||||
"Q78",
|
||||
"Q79",
|
||||
"Q80"
|
||||
"Q80",
|
||||
"Q81"
|
||||
],
|
||||
"nested": [
|
||||
{
|
||||
@@ -300,9 +302,9 @@ The block below is the parse this document renders, byte for byte. `--check` com
|
||||
"end_line": 8,
|
||||
"line": 1
|
||||
},
|
||||
"queue_bytes": 1756599,
|
||||
"queue_lines": 11963,
|
||||
"queue_sha256": "91c3b9b6843f986c76a0933e1f68f57652d0fb6db76b93b5da3003a7983ab35a",
|
||||
"queue_bytes": 1760133,
|
||||
"queue_lines": 12006,
|
||||
"queue_sha256": "52f82e595035956d55a82508c3cbfff538969f7eba05049ded3f7b8f87d8ed2a",
|
||||
"sections": [
|
||||
{
|
||||
"bytes": 3139,
|
||||
@@ -1169,16 +1171,28 @@ The block below is the parse this document renders, byte for byte. `--check` com
|
||||
"title": "closure \u2014 manifest.py carries the lane's 0/1/2 contract, three blind spots are closed, and 17 cells now sit in the gate *(volt, 2026-10-26; beam's lane by authorship, taken by the Workhorse as the \u2026"
|
||||
},
|
||||
{
|
||||
"bytes": 4573,
|
||||
"end_line": 11963,
|
||||
"bytes": 4579,
|
||||
"end_line": 11966,
|
||||
"id": "Q80",
|
||||
"line": 11914,
|
||||
"lines": 50,
|
||||
"lines": 53,
|
||||
"role": "opening",
|
||||
"role_detail": "",
|
||||
"status": "open and unclaimed.",
|
||||
"status_line": 11960,
|
||||
"title": "spark's `json_sha256_validator.py` prints a hash of bytes it never validated, admits `NaN`/`Infinity` as valid, and reports an unreadable input in the same code as a bad document *(spark lane; opened \u2026"
|
||||
},
|
||||
{
|
||||
"bytes": 3528,
|
||||
"end_line": 12006,
|
||||
"id": "Q81",
|
||||
"line": 11967,
|
||||
"lines": 40,
|
||||
"role": "opening",
|
||||
"role_detail": "",
|
||||
"status": "open and unclaimed.",
|
||||
"status_line": 12004,
|
||||
"title": "spark's `hermes_profile_health.py` grades a profile by the existence of names, hardcodes the one host path it can check, and carries a branch that cannot fire *(spark lane; opened 2026-10-26 by the \u2026"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user