Using Mycelium together with Extra¶
Mycelium manages the project. Extra plans and verifies its runs.
You can use Extra in an ordinary repository. Add Mycelium when you want its project memory, analysis conventions, code review, and reports.
Tested with Mycelium 0.6.0 and 0.7.2. Extra’s hook and file checks (for example, that a
script piped through stdin is not counted as a post-action run, and that Status in
decisions.md is read as body text) were checked against those versions. /mycelium-extra:init
reads the version that .mycelium/plugin-root points at and prints one line when it is another
version, or cannot be read. It never writes Mycelium’s files, and says nothing in a repository
without Mycelium.
Who does what¶
Task |
Use |
|---|---|
Read existing decisions and plan the next analysis |
Extra’s |
Create an analysis folder with a plan and tracker |
Extra’s |
Approve covered execution and record receipts |
Extra’s approval gate |
Implement and execute the analysis |
Your normal runner or Mycelium’s |
Check the approved plan against the execution record |
Extra’s |
Review code and statistics before the final freeze; produce a report |
Mycelium’s |
Maintain decisions, learnings, and findings |
Mycelium’s normal lifecycle |
Use an existing Mycelium project¶
Follow Usage tiers; Extra reads the project’s .living/ records,
analysis docs, and conventions before planning. Use new-analysis only when
you need a new folder. After approval, mycelium:analyze continues that folder.
For reportable work, freeze the finished code in a run plan, run it, and verify.
Ask Mycelium’s review to check the methods and code against the approved plan
before the final freeze (see Usage tiers). After
saving provenance, ask for another review only if verify leaves findings
unresolved or a result needs a closer look; it can use
<analysis>/provenance/plan-<hash>.md as the plan. Record the verification
status through Mycelium’s normal memory updates.
What Extra reads from Mycelium¶
This is everything the shipped code reads, plus what its skills tell the agent to
read. Upstream paths are in Mycelium
(checked at commit 8f8b167, plugin version 0.9.1; the versions in this guide are
three different checks: 0.6.0 and 0.7.2 are the releases Extra’s hooks were tested
against, 0.9.1 is the upstream the lineage format and this table were read from, and
the fixture project follows 0.8.1). Extra never imports Mycelium’s code, and the one
place it runs any is idea, which calls Mycelium’s upsert_table_row.py as a
subprocess; the one test that imports it,
tests/test_contract_compatibility.py, loads upstream’s data_contract_check.py
read-only from the checkout named by MYCELIUM_UPSTREAM and skips that half when
there is none.
Record |
Upstream path |
Read by |
Used for |
When absent |
|---|---|---|---|---|
Data-lineage manifest |
|
|
A script that lineage saw run in the plan’s window, that the gate did not record and the plan does not name, is a gap; script-less (inline) commands are counted and not checked. An action that lists an output is also a |
No lineage gaps and no message; unreadable files are skipped |
Analysis manifest |
|
|
A |
Shown as |
Registered values |
|
|
The claimed number is compared with that cell, read as ordinary JSON: dotted keys, and list entries by position (the fragment’s |
The claim is a gap (“unverified”), not a pass |
Pointer to the Mycelium install |
|
|
A one-line note when the version is not 0.6.0 or 0.7.2; Mycelium’s |
No note; |
|
|
|
Whether the repository is a Mycelium project: the unignored-state warning, post-run reminders to follow Mycelium’s post-action protocol, the |
Treated as an ordinary repository |
Todo registry |
|
|
A parked idea in Mycelium’s own todo format; the next idea to work on |
|
Decisions and learnings |
|
|
Which decision still binds; the learning to harden |
The skill says so and stops |
Project memory for planning |
|
|
The plan’s sources |
Missing manifests, index or findings are treated as normal partial states |
verify stale prints an rg command for .living/findings/; it does not read the
findings. No Extra code reads Mycelium’s tripwire documents, review outputs or
conventions (grill’s instructions do point the agent at the last two).
Evidence limits¶
Lineage is static, and it is not proof of who produced a file. Upstream detects a run from the command line and finds its inputs and outputs by static scanning (
io_detection: "static"or"unresolved"), then writes the manifest when a session stops. It covers finished sessions only, and which commands it detects depends on the Mycelium version: Extra’s post-run reminder assumes the 0.7.2 detector (python, R, jupyter), while the 0.9.1 lineage reference also lists pipeline runners. A lineage record is candidate producer evidence only: it is used for an output when an explicit id or a unique session, command, script and time match joins it to one matched attempt, the join is stated as inferred, and it is ignored forunresolveddetection, a nonzero exit, a missing path, a hash that differs from the file, or an attempt that watched the output and did not see it change. Upstream fills missing hashes from disk later, so a hash is not proof. It can confirm an observed producer or add a second one (unresolved); it never sets asupportedproducer.A tripwire audit describes tests; it does not run them. In Mycelium’s
skills/core/references/review/deep-tripwires.md, audit writes a plan of what would be tested, scaffold proposes the instrumentation, and only run executes checks and reports pass or fail. An audit document cannot show that a test passed, and Extra does not accept one as an executed check.A registered number is mutable across runs.
register_valueupserts: a later run replaces the earlier value silently, so a matchingnumbers.jsoncell shows the file’s current content, not which run wrote it. Use the claims check to catch a number that disagrees with its cell, andverifyfor what ran.
Optional routing through analyze¶
Upstream’s analyze skill does not call Extra, and Extra offers no API for it to do
so. Hints in Extra’s skills and hooks are advice to the agent. Routing planning,
approval, or verification through analyze would need an agreed upstream
contribution; it is future collaboration, not a current integration.
Boundaries¶
Extra’s planning and data checks are read-only. Scaffolding writes only the new
analysis folder; verification writes only its provenance/ after confirmation.
decision-status appends a confirmed resolution; harden updates one confirmed
learning after demonstrating its test. idea writes under todo/ only (one item
file and one registry row, with no questions asked), and idea-triage annotates
those items and sets a picked item’s Status. Extra does not replace Mycelium’s memory
or code review. Independent plan review advises; only your approval authorizes runs.
The gate keeps its state in .mycelium-extra/, apart from Mycelium’s .mycelium/
and .living/, and init ignores it in .gitignore. Mycelium’s stop check counts
git status, so if that folder is not ignored in a repository with .living/, the
approval card opens with a warning: add .mycelium-extra/ to .gitignore.
Credits¶
Extra reuses Mycelium’s MIT-licensed analysis template and follows its folder, decision, finding, and memory conventions (Copyright (c) 2024 Mycelium Contributors). The bundled template retains the Mycelium MIT notice. scilintr supplies scientific linting; data-contract alerts use ClawBio’s expected/observed/evidence format.