dsh-vibe-math 2.7.2 → 2.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +11 -10
- package/README.md +13 -12
- package/cordis.patch.yml +112 -16
- package/docs/AUDIT-CHECKLIST.md +229 -3
- package/docs/COMPAT-AUDIT-ROUND2.md +35 -9
- package/docs/final-paper.md +2 -2
- package/docs/math-computation.md +13 -6
- package/docs/parameter-schema.md +37 -0
- package/docs/release-notes/README.en.md +1 -0
- package/docs/release-notes/README.md +1 -0
- package/docs/release-notes/RELEASE-NOTES-2.7.2.en.md +2 -2
- package/docs/release-notes/RELEASE-NOTES-2.7.2.md +3 -3
- package/docs/release-notes/RELEASE-NOTES-2.7.3.en.md +67 -0
- package/docs/release-notes/RELEASE-NOTES-2.7.3.md +67 -0
- package/docs/release-notes/TEMPLATE.md +6 -0
- package/docs/status-report-fields.md +167 -0
- package/docs/test-timing.md +8 -5
- package/installer.js +27 -17
- package/package.json +250 -203
- package/prompt-corpus-persona/persona-corpus.json +9 -9
- package/prompt-corpus-persona/persona-corpus.md +225 -33
- package/prompt-corpus-v2/formal-verify-v2.json +295 -115
- package/prompt-corpus-v2/formal-verify-v2.md +2287 -283
- package/prompt-corpus-v3/formal-verify-v3.json +105 -105
- package/prompt-corpus-v3/formal-verify-v3.md +213 -143
- package/prompt-corpus-v4/formal-verify-v4.json +18 -18
- package/prompt-corpus-v4/formal-verify-v4.md +49 -44
- package/prompt-corpus-v5/prompt-corpus-v5.json +82 -82
- package/prompt-corpus-v5/prompt-corpus-v5.md +451 -207
- package/scripts/update-doc-counts.mjs +71 -0
- package/tests/audit-artifact-docs.mjs +72 -0
- package/tests/audit-artifact-docs.mutants.mjs +58 -0
- package/tests/audit-installer-assertions.mutants.mjs +63 -0
- package/tests/audit-installer-compat.test.mjs +52 -4
- package/tests/audit-installer-policy.test.mjs +41 -8
- package/tests/audit-math-computation-contract.mjs +64 -8
- package/tests/audit-math-computation-contract.mutants.mjs +106 -0
- package/tests/audit-math-computation-parity.mjs +164 -3
- package/tests/audit-math-computation-sensitivity.mjs +4 -2
- package/tests/audit-package-membership.mjs +57 -0
- package/tests/audit-package-membership.mutants.mjs +28 -0
- package/tests/audit-participant-set-parity.mjs +160 -0
- package/tests/audit-path-discipline.mjs +83 -0
- package/tests/audit-path-discipline.mutants.mjs +51 -0
- package/tests/audit-persona-sensitivity.mjs +14 -0
- package/tests/audit-persona-surface.mutants.mjs +69 -0
- package/tests/audit-persona-surface.test.mjs +63 -22
- package/tests/audit-prompt-duplication.mjs +143 -0
- package/tests/audit-prompt-duplication.mutants.mjs +50 -0
- package/tests/audit-prompt-invariants.mjs +43 -5
- package/tests/audit-readme-bilingual.test.mjs +152 -0
- package/tests/audit-readme-counts.mjs +95 -0
- package/tests/audit-readme-counts.mutants.mjs +52 -0
- package/tests/audit-registration.mjs +78 -0
- package/tests/audit-status-report-fields.mjs +172 -0
- package/tests/audit-status-report-fields.mutants.mjs +64 -0
- package/tests/audit-v3-registration-parity.mjs +156 -0
- package/tests/audit-v5-integrity.mjs +300 -13
- package/tests/audit-v5-lean-abstention.mjs +392 -0
- package/tests/audit-v5-lean-abstention.mutants.mjs +106 -0
- package/tests/audit-v5-prompt-duplication.mjs +88 -0
- package/tests/audit-v5-prompt-duplication.mutants.mjs +34 -0
- package/tests/audit-v5-sensitivity.mjs +12 -7
- package/tests/e2e-identity-a6.mutants.mjs +65 -0
- package/tests/e2e-v5-round2.test.mjs +458 -13
- package/tests/formal-verify-v2.test.mjs +91 -43
- package/tests/formal-verify-v3.mutants.mjs +117 -0
- package/tests/formal-verify-v3.test.mjs +85 -39
- package/tests/formal-verify-v4.mutants.mjs +152 -0
- package/tests/formal-verify-v4.test.mjs +541 -9
- package/tests/formal-verify-v5.test.mjs +68 -9
- package/tests/helpers/doc-counts-format.mjs +41 -0
- package/tests/helpers/math-computation-fake-seam.mjs +4 -0
- package/tests/math-computation-a1.mutants.mjs +72 -0
- package/tests/math-computation-archive-rerun.mutants.mjs +65 -0
- package/tests/math-computation-discovery.mutants.mjs +76 -0
- package/tests/math-computation-shared.test.mjs +274 -5
- package/tests/math-computation-v2.test.mjs +767 -0
- package/tests/math-computation-v3.test.mjs +759 -0
- package/tests/math-computation-v4.mutants.mjs +133 -0
- package/tests/math-computation-v4.test.mjs +739 -0
- package/tests/prompt-v5-integrity.test.mjs +13 -2
- package/tests/run-tests.mjs +139 -9
- package/tests/run-tests.mutants.mjs +70 -0
- package/tests/selfdrive-v5.mjs +53 -1
- package/tests/selfdrive-v5.mutants.mjs +132 -0
- package/tests/v2-fix-probes.mutants.mjs +100 -0
- package/tests/v2-fix-probes.test.mjs +1039 -0
- package/tests/v2-list-agents-and-next-step.mutants.mjs +106 -0
- package/tests/v3-fix-probes.mutants.mjs +95 -0
- package/tests/v3-fix-probes.test.mjs +891 -0
- package/tests/v5-institute-fixes.mutants.mjs +190 -0
- package/vibe-math-v2/agent.cordis.yml +62 -6
- package/vibe-math-v2/math-computation.js +130 -41
- package/vibe-math-v2/math-engines.js +12 -12
- package/vibe-math-v2/vibe-math-v2.js +388 -113
- package/vibe-math-v2//345/256/236/347/216/260/346/226/271/346/241/210.md +5 -1
- package/vibe-math-v3/agent.cordis.yml +72 -6
- package/vibe-math-v3/math-computation.js +130 -41
- package/vibe-math-v3/math-engines.js +12 -12
- package/vibe-math-v3/vibe-math-v3.js +422 -126
- package/vibe-math-v4/agent.cordis.yml +44 -8
- package/vibe-math-v4/math-computation.js +130 -41
- package/vibe-math-v4/math-engines.js +12 -12
- package/vibe-math-v4/vibe-math-v4.js +196 -43
- package/vibe-math-v4//345/256/236/347/216/260/346/226/271/346/241/210.md +2 -0
- package/vibe-math-v5/agent.cordis.yml +46 -12
- package/vibe-math-v5/math-computation.js +130 -41
- package/vibe-math-v5/math-engines.js +12 -12
- package/vibe-math-v5/vibe-math-v5.js +1173 -218
- package/vibe-math-v5//345/256/236/347/216/260/346/226/271/346/241/210.md +80 -12
- package/vibe-math-v5//346/236/266/346/236/204/345/233/276.md +2 -2
package/README.en.md
CHANGED
|
@@ -27,6 +27,7 @@ After installing this plugin package (or manually copying the presets), **four**
|
|
|
27
27
|
- **Positioning, flow and division of labour of the four** → [Architecture Diagrams](#-architecture-diagrams-v2--v3--v4--v5) · [Architecture and division of labour](#-architecture-and-division-of-labour-all-four-in-parallel)
|
|
28
28
|
- **New: the final paper (produced at closure)** → [Features](#-features) · [full contract](docs/final-paper.md)
|
|
29
29
|
- **Lean formal verification** → [Lean formal verification](#-lean-formal-verification-shared-by-the-four-architectures-adjustable-switch) · [full contract](docs/formal-verification.md)
|
|
30
|
+
- **Observability (`status()` / `report()` fields and their scopes)** → [complete field table](docs/status-report-fields.md)
|
|
30
31
|
- **What is in the directories** → [Directory structure](#-directory-structure)
|
|
31
32
|
- **Tuning parameters** → [Parameter quick reference](#-parameter-quick-reference)
|
|
32
33
|
- **Checkpoint resume / mid-run intervention** → [Checkpoint resume & manual intervention](#-checkpoint-resume--manual-intervention-two-hard-requirements)
|
|
@@ -115,7 +116,7 @@ flowchart TB
|
|
|
115
116
|
|
|
116
117
|
## ✨ Features
|
|
117
118
|
|
|
118
|
-
- **Final paper (on by default in all four presets)**: at closure the run writes a complete paper that **only organises evidence it already has**, and the paper phase runs **before** the run is marked complete; the artifacts are `Paper/<id>/{paper.md,paper.tex,paper.pdf,paper.meta.json,paper.log.md}
|
|
119
|
+
- **Final paper (on by default in all four presets)**: at closure the run writes a complete paper that **only organises evidence it already has**, and the paper phase runs **before** the run is marked complete; the artifacts are `Paper/<id>/{paper.md,paper.tex,paper.pdf,paper.meta.json,paper.log.md}` (v2/v3 additionally write `paper.lock.json`). Parameters: `finalPaper` (default `true`) / `paperFormat` (default `both`) / `paperLanguage` (default `zh`) / `paperCompilePdf` (default `true`) (plus `paperEditor` on v4/v5); the manual trigger is `/vN paper [lang=] [format=] [editor=] [force]`. A PDF needs a LaTeX engine on the host (`xelatex` preferred for Chinese); without one the tex+md are still delivered. Full contract and usage: [`docs/final-paper.md`](docs/final-paper.md).
|
|
119
120
|
- **Multi-agent automatic solving**: the main agent hands the problem to the scheduler, which dispatches explorer / solver / verifier (v2/v3) plus subagents such as **planner (planning agent, v3)** and **method-keeper (method organizing agent, v3)** to solve collaboratively; **you do not need to operate node by node by hand**.
|
|
120
121
|
- **Multi-agent cross-validation**: every conclusion goes to ≥3 "strict reviewers" for **independent review → debate (exchange group) → adjudication** (v3 defaults to **near-consensus adjudication**: if on the same side and the mean is ≥0.85/≤0.15, take the mean, so that "0.9 vs 1" is not misjudged as 0.5).
|
|
121
122
|
- **Paper-style Markdown knowledge base (v3)**: the problem list (including dependencies between problems, and the causes and plans of descendant problems), research log, propositions, and method library are all written and continued in md paper/research-report style (when a direction is re-derived, the logs of the old direction are automatically archived and kept); **only `Verified/` and the objects that a verifier judged true/false are absolutely trustworthy**, and all other md (including unverified assertions in the method library) serve only as empirical reference.
|
|
@@ -451,7 +452,7 @@ The main agent `vibe_math_status`: in `qs/qs.json`, `q1` has been written back w
|
|
|
451
452
|
|
|
452
453
|
**Step 6 — the final paper is produced automatically at closure (on by default)**
|
|
453
454
|
|
|
454
|
-
All four presets default to `finalPaper=true`: once the respective closure signal fires, the paper phase starts **before the run is marked complete** (in v2/v3 a dedicated "paper writer" subagent organises the existing evidence; in v4/v5 the team co-authors, cross-reviews, and the editor finalises on unanimous agreement). The artifacts are `Paper/<id>/{paper.md,paper.tex,paper.pdf,paper.meta.json,paper.log.md}
|
|
455
|
+
All four presets default to `finalPaper=true`: once the respective closure signal fires, the paper phase starts **before the run is marked complete** (in v2/v3 a dedicated "paper writer" subagent organises the existing evidence; in v4/v5 the team co-authors, cross-reviews, and the editor finalises on unanimous agreement). The artifacts are `Paper/<id>/{paper.md,paper.tex,paper.pdf,paper.meta.json,paper.log.md}` (v2/v3 additionally write `paper.lock.json`): `paper.tex` / `paper.pdf` are produced only when `paperFormat` includes tex and the host detects a LaTeX engine (`xelatex` preferred for Chinese; with no engine only md/tex are delivered, and the wrap-up is never blocked). Trigger it manually with `/vibe paper` (v2/v3), `/v4 paper` or `/v5 paper`, optionally with `lang=` / `format=` / `editor=` / `force`; the full contract is in [`docs/final-paper.md`](docs/final-paper.md).
|
|
455
456
|
|
|
456
457
|
### 🖼️ Real usage example (long screenshot)
|
|
457
458
|
|
|
@@ -501,10 +502,6 @@ All four presets default to `finalPaper=true`: once the respective closure signa
|
|
|
501
502
|
| `mathTimeoutMs` | `60000` | all four | Per-run budget in milliseconds (minimum 1000); on timeout the process is terminated |
|
|
502
503
|
| `mathPackages` | `[]` | all four | Packages/toolboxes required by default; a missing one is reported with an install plan - it is **never installed automatically** |
|
|
503
504
|
| `mathInstallScope` | `user` | all four | Install scope; `system` must be given **explicitly on every call and is never remembered** (most managers have no system template, in which case the request is refused) |
|
|
504
|
-
|
|
505
|
-
> **Archive = evidence**: every run writes `Computation/<id>/` (receipt carries `scriptPath` + `scriptHash`); after editing a script you MUST re-run it with `mode:'file'` for a NEW receipt (`scriptChanged` / `scriptChangedDuringRun` warn; an old receipt does not represent edited code); archives are append-only. See [`docs/math-computation.md`](docs/math-computation.md) §4.1.
|
|
506
|
-
|
|
507
|
-
> **Declare substitutions**: when an alternative changes exactness or conclusion strength, the conclusion MUST say so and must not read as the original result; if no exact result is available, say so plainly (rule line `MATH_SUBSTITUTION_RULE_LINE`).
|
|
508
505
|
| `tickIntervalMs` | 2000 | v2·v3 | Scheduler heartbeat interval (milliseconds) |
|
|
509
506
|
| `activityLogCap` | 100 | v2·v3 | Number of activity log entries retained (the report displays at most 30) |
|
|
510
507
|
| `maxExplorerRetries` | 3 | v2·v3 | Upper limit on re-dispatching after an explorer fails to split directions |
|
|
@@ -531,6 +528,10 @@ All four presets default to `finalPaper=true`: once the respective closure signa
|
|
|
531
528
|
| `paperLatexCommand` | `''` | all four | Force one LaTeX engine executable (empty = auto-detect per language: xelatex→latexmk→pdflatex→lualatex→tectonic) |
|
|
532
529
|
| `paperEditor` | v4 `office`; v5 `academician` | v4·v5 | Who finalises. v4: `office` (the session root / human side, default) or `resident:<id>` (if that resident has left, it degrades to office and the meta/log say so); v5: `academician` (default, the only editor an unattended run can reach) or `office` (manual `/v5 paper editor=office` only, and only after consulting the whole institute) |
|
|
533
530
|
|
|
531
|
+
> **Archive = evidence**: every run writes `Computation/<id>/` (receipt carries `scriptPath` + `scriptHash`); after editing a script you MUST re-run it with `mode:'file'` for a NEW receipt (`scriptChanged` / `scriptChangedDuringRun` warn; an old receipt does not represent edited code); archives are append-only. See [`docs/math-computation.md`](docs/math-computation.md) §4.1.
|
|
532
|
+
|
|
533
|
+
> **Declare substitutions**: when an alternative changes exactness or conclusion strength, the conclusion MUST say so and must not read as the original result; if no exact result is available, say so plainly (rule line `MATH_SUBSTITUTION_RULE_LINE`).
|
|
534
|
+
|
|
534
535
|
- **Install and versions**: `op:'install'` dispatches to conda/mamba, uv, or the pip fallback; R/Octave/Julia default to user scope (`system` => `MATH_REFUSED`); version solving is delegated to the package manager — existence only by base name, `pkg==1.2` passed through verbatim, unsafe/unknown syntax => `unsupported-version-syntax`; engine discovery and `engine:'cli'` details are in [`docs/math-computation.md`](docs/math-computation.md) §5.1-5.4.
|
|
535
536
|
- **Lean async**: `leanAsync=true` (default) queues compiles so `lean_run`/`lean_archive{run:true}` return immediately; **only** a `settled` job with exit 0 and an unchanged content hash and build context sets `passed` and writes `Verified/Lean/<id>.lean` — everything else stays `attempted`.
|
|
536
537
|
|
|
@@ -540,7 +541,7 @@ v2 has **no preset-specific parameters**: its complete parameter set is every ro
|
|
|
540
541
|
|
|
541
542
|
#### Final paper
|
|
542
543
|
|
|
543
|
-
All four presets have it **on by default**: after the closure signal fires and **before the run is marked complete**, the run enters the paper phase. In v2 a dedicated "paper writer" subagent assembles the concluded evidence into `Paper/<
|
|
544
|
+
All four presets have it **on by default**: after the closure signal fires and **before the run is marked complete**, the run enters the paper phase. In v2 a dedicated "paper writer" subagent assembles the concluded evidence into `Paper/<id>/{paper.md,paper.tex,paper.meta.json,paper.log.md,paper.lock.json}` (plus `paper.pdf` only when an engine is detected). Manual: `/vibe paper [lang=zh|en] [format=both|md|tex] [force]`. A PDF needs a LaTeX engine on the host (`xelatex` preferred for Chinese); with no engine or a failed compile the tex+md are still delivered with only a logged warning — the finalisation is never blocked and an existing pdf is never overwritten. Full contract: `docs/final-paper.md`.
|
|
544
545
|
|
|
545
546
|
### v3 (paper-style md + planner agent + method library) preset-specific parameters
|
|
546
547
|
|
|
@@ -563,7 +564,7 @@ v3 accepts **all** of v2's parameters (the rows above whose "Applies to" column
|
|
|
563
564
|
|
|
564
565
|
#### Final paper
|
|
565
566
|
|
|
566
|
-
v3 uses the same switch and the same ordering as v2 (strict termination; the writer is spawned **before** the scheduler stops): a dedicated "paper writer" subagent produces `Paper/<
|
|
567
|
+
v3 uses the same switch and the same ordering as v2 (strict termination; the writer is spawned **before** the scheduler stops): a dedicated "paper writer" subagent produces `Paper/<id>/{paper.md,paper.tex,paper.meta.json,paper.log.md,paper.lock.json}` (plus `paper.pdf` when an engine is detected). Manual: `/vibe paper [lang=zh|en] [format=both|md|tex] [force]`. No engine or a failed compile still delivers tex+md, logs a warning and never blocks the finalisation. Full contract: `docs/final-paper.md`.
|
|
567
568
|
|
|
568
569
|
### v4 (resident self-organization · experimental) preset-specific parameters
|
|
569
570
|
|
|
@@ -576,7 +577,7 @@ Adjustable via `vibe_v4_set` (persisted to `State/settings.json`); shared parame
|
|
|
576
577
|
|
|
577
578
|
#### Final paper
|
|
578
579
|
|
|
579
|
-
On by default; v4 enters the paper phase after the closing meeting casts its unanimous stop vote and **before** the run is marked complete. Team flow: each resident writes its own part → merge (deduplicate, unify terms and notation) → at least one **cross-review** round → the editor named by `paperEditor` (default `office`, or `resident:<id>`) turns it into the final draft → the paper is finalised only on **unanimous "deliverable"** (objections keep iterating; past the round cap a warning is recorded and the disagreement goes into the appendix). Manual: `/v4 paper [lang=] [format=] [editor=office|resident:<id>] [force]`. Output: `Paper/<run id>/{paper.md,paper.tex,paper.meta.json,paper.log.md
|
|
580
|
+
On by default; v4 enters the paper phase after the closing meeting casts its unanimous stop vote and **before** the run is marked complete. Team flow: each resident writes its own part → merge (deduplicate, unify terms and notation) → at least one **cross-review** round → the editor named by `paperEditor` (default `office`, or `resident:<id>`) turns it into the final draft → the paper is finalised only on **unanimous "deliverable"** (objections keep iterating; past the round cap a warning is recorded and the disagreement goes into the appendix). Manual: `/v4 paper [lang=] [format=] [editor=office|resident:<id>] [force]`. Output: `Paper/<run id>/{paper.md,paper.tex,paper.meta.json,paper.log.md}` (plus `paper.pdf` when an engine is available). **Note: v4 does NOT write `paper.lock.json`** — paper rewrites are serialised inside this process; the **shared-file write lock is not implemented** (`vibe_v4_claim_write` returns `{ok:true}` without reserving anything; see that tool description in `vibe-math-v4.js`). Full contract: `docs/final-paper.md`.
|
|
580
581
|
|
|
581
582
|
**v4-only tool `vibe_v4_formal_report` (documented in round 3)**: it reports "which propositions/methods have formal support and how strong it is" back to the resident team. That is part of v4's **team-autonomy** flow - residents must align on which settled conclusion may be cited - so it exists **only in v4** (v2/v3 use the dedicated solver/verifier architecture, where formal status travels through `vibe_math_lean_*` plus the verification logs; v5 carries it through the academician review path `vibe_v5_propose_verify`/`vibe_v5_verdict` and `vibe_v5_status`). Both v4 persona blocks require members to use it, and v4's `status`/`report` aggregate its output.
|
|
582
583
|
|
|
@@ -627,7 +628,7 @@ Common controls: `vibe_v5_configure` (configure first) → `vibe_v5_start` (star
|
|
|
627
628
|
- **The persona source text of the four presets**: [`prompt-corpus-persona/persona-corpus.md`](prompt-corpus-persona/persona-corpus.md) (the prompts the main agent actually receives: which tools, which parameters, which slash subcommands; generated by `audit-persona-surface.test.mjs` and shipped with the package)
|
|
628
629
|
- **Lean formal verification (a contract shared by the four architectures)**: [`docs/formal-verification.md`](docs/formal-verification.md)
|
|
629
630
|
- **Final paper (a contract shared by the four architectures)**: [`docs/final-paper.md`](docs/final-paper.md) (the five parameters plus `paperEditor` on v4/v5, the "paper phase before the run is marked complete" ordering, the `Paper/<id>/` artifacts and the nine-section skeleton, LaTeX detection with repair-then-degrade, the v4/v5 team co-authoring flow and the v5 office-consultation rule)
|
|
630
|
-
- **Test timing baseline and parallel run recipes**: [`docs/test-timing.md`](docs/test-timing.md) (`node tests/run-tests.mjs` runs **every suite AND every probe** in parallel: `TOTAL
|
|
631
|
+
- **Test timing baseline and parallel run recipes**: [`docs/test-timing.md`](docs/test-timing.md) (`node tests/run-tests.mjs` runs **every suite AND every probe** in parallel: `TOTAL 101 (44 suites + 57 probes/variants — JOB counts, not file counts); the authority is `node tests/run-tests.mjs --counts` (JOB counts, not file counts), checked by [`tests/audit-readme-counts.mjs`](tests/audit-readme-counts.mjs); which 65 of the `tests/*.mjs` files ship in the package (17 suites + 48 probe/script files) and which are repository-only is in §1.1 of that document; every runner prints its elapsed time/speedup so the next strategy can be chosen)
|
|
631
632
|
- **Static prompt-surface consistency (persona ↔ tool registry ↔ slash command hint/usage)**: [`audit-persona-surface.test.mjs`](tests/audit-persona-surface.test.mjs) (260 assertions, and generates [`prompt-corpus-persona/persona-corpus.md`](prompt-corpus-persona/persona-corpus.md) for manual review) + [`audit-persona-sensitivity.mjs`](tests/audit-persona-sensitivity.mjs) (16 sensitivity probes) — guarding "every registered tool must appear in the persona / every name in the persona must really be registered / the `prefix` and `text` blocks must match line by line / hint, usage, and the actual branch must agree in all three places"
|
|
632
633
|
- **Mandatory checklist for a full review**: [`AUDIT-CHECKLIST.md`](docs/AUDIT-CHECKLIST.md) (this repository's mandatory audit process; §1.9 specifically checks "whether the tool parameter schema can accommodate them")
|
|
633
634
|
- **Prompt/interaction invariants (all four sets together, re-checkable in one command)**: [`audit-prompt-invariants.mjs`](tests/audit-prompt-invariants.mjs) (157 assertions) — encoding, one by one, "the classes of prompt/tool-surface defects that have really occurred historically" as static invariants (abbreviated tool names, projecting a fidelity defect as 0, `defect` written only in the prompt but not implemented, a receipt contract missing `defect`, passing without a note, wrong field names, the `off` tier still being able to write state in its receipt, uncertain corpora, missing probes, **a tool's closed schema that cannot accommodate the parameters in its own documentation**, **keys that the schema declares at the parameter level but silently drops**). Adding `--self-probe` injects these defect shapes in memory and requires the corresponding invariants to **turn red** while the unmutated control run **stays green** (5/5); the script itself additionally carries six self-checks X5–X8b (the comment scanner must recognize regex literals — including regexes **after a keyword** such as `return /…/` — `//` inside strings must be preserved, stripping comments must not change line structure, and the parse-level criterion that "the four sets of source, with comments stripped, must still parse under `node --check`")
|
package/README.md
CHANGED
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
- **四套架构的定位、流程与分工** → [架构图](#-架构图v2--v3--v4--v5) · [架构与分工(四套并列)](#-架构与分工四套并列)
|
|
28
28
|
- **新功能:最终论文(收口时自动产出)** → [功能特色](#-功能特色) · [完整契约](docs/final-paper.md)
|
|
29
29
|
- **Lean 形式化验证** → [Lean 形式化验证](#-lean-形式化验证四个架构共用可调开关) · [完整契约](docs/formal-verification.md)
|
|
30
|
+
- **可观测面(`status()` / `report()` 字段与作用域)** → [完整字段表](docs/status-report-fields.md)
|
|
30
31
|
- **目录里都有什么** → [目录结构](#-目录结构)
|
|
31
32
|
- **调参数** → [参数速查表](#-参数速查表)
|
|
32
33
|
- **断点续跑 / 中途干预** → [断点续跑 & 人工干预](#-断点续跑--人工干预两大硬性需求)
|
|
@@ -115,7 +116,7 @@ flowchart TB
|
|
|
115
116
|
|
|
116
117
|
## ✨ 功能特色
|
|
117
118
|
|
|
118
|
-
- **最终论文(四个预设默认开启)**:收口时自动撰写一篇**只整理已有证据**的完整论文,且论文阶段发生在 run 被标记完成**之前**;产物在 `Paper/<id>/{paper.md,paper.tex,paper.pdf,paper.meta.json,paper.log.md}
|
|
119
|
+
- **最终论文(四个预设默认开启)**:收口时自动撰写一篇**只整理已有证据**的完整论文,且论文阶段发生在 run 被标记完成**之前**;产物在 `Paper/<id>/{paper.md,paper.tex,paper.pdf,paper.meta.json,paper.log.md}`(v2/v3 另有 `paper.lock.json`)。参数 `finalPaper`(默认 `true`)/`paperFormat`(默认 `both`)/`paperLanguage`(默认 `zh`)/`paperCompilePdf`(默认 `true`)(v4/v5 另有 `paperEditor`),手动 `/vN paper [lang=] [format=] [editor=] [force]`;PDF 需要宿主上有 LaTeX 引擎(中文优先 `xelatex`),否则仍交付 tex+md。完整契约与用法见 [`docs/final-paper.md`](docs/final-paper.md)。
|
|
119
120
|
- **多代理自动求解**:主代理把问题交给调度器,调度器派发 explorer / solver / verifier(v2/v3)与 **planner(规划代理,v3)**、**method-keeper(方法整理代理,v3)** 等子代理协同求解,**你无需逐节点手操**。
|
|
120
121
|
- **多代理交叉验证**:每个结论交给 ≥3 个「严苛审稿人」**独立审查 → 辩论(交流群)→ 裁决**(v3 默认**近共识裁决**:同侧且均值 ≥0.85/≤0.15 取均值,避免"0.9 vs 1"被误判成 0.5)。
|
|
121
122
|
- **论文式 Markdown 知识库(v3)**:问题清单(含问题间依赖、后生问题产生原因与计划)、研究日志、命题、方法库全部以 md 论文/研究报告式书写与续写(方向重派生时旧方向的日志自动归档保留);**只有 `Verified/` 与验证器判真/假的对象绝对可信**,其余 md(含方法库未验证断言)仅作经验参考。
|
|
@@ -343,7 +344,7 @@ v5 的完整架构(成员生命周期、一轮时序、共识状态机、会
|
|
|
343
344
|
| 工具 | 作用 |
|
|
344
345
|
|---|---|
|
|
345
346
|
| `vibe_math_add_problem` | 加题(id/description/priority/dependencies?;v3 生成 `Problems/<id>.md`) |
|
|
346
|
-
| `vibe_math_add_proposition` / `vibe_math_list_propositions`(v2/v3) | 添加 / 列出命题库(id/概述/布尔估计/细类型/价值·关键性;v3 生成 `Propos/<分类>/<id>.md
|
|
347
|
+
| `vibe_math_add_proposition` / `vibe_math_list_propositions`(v2/v3) | 添加 / 列出命题库(id/概述/布尔估计/细类型/价值·关键性;v3 生成 `Propos/<分类>/<id>.md`;**add 只新建**:id 已存在会被拒绝并返回 `PROPOSITION_ID_EXISTS`,绝不覆盖已有卡) |
|
|
347
348
|
| `vibe_math_start` / `vibe_math_resume` | 启动 / 断点恢复调度器 |
|
|
348
349
|
| `vibe_math_pause` / `vibe_math_abort` | 暂停 / 终止(中断所有子代理) |
|
|
349
350
|
| `vibe_math_status` / `vibe_math_report` | 查看状态 / 完整进度报告 |
|
|
@@ -451,7 +452,7 @@ v5 的完整架构(成员生命周期、一轮时序、共识状态机、会
|
|
|
451
452
|
|
|
452
453
|
**Step 6 — 收口时自动产出最终论文(默认开启)**
|
|
453
454
|
|
|
454
|
-
四个预设默认 `finalPaper=true`:论文阶段在各个收口信号命中后、**run 被标记完成之前**启动(v2/v3 由专职「论文撰写」子代理整理已有证据,v4/v5 由团队合写 → 交叉互审 → 定稿代表定稿并取得一致认同)。产物在 `Paper/<id>/{paper.md,paper.tex,paper.pdf,paper.meta.json,paper.log.md}
|
|
455
|
+
四个预设默认 `finalPaper=true`:论文阶段在各个收口信号命中后、**run 被标记完成之前**启动(v2/v3 由专职「论文撰写」子代理整理已有证据,v4/v5 由团队合写 → 交叉互审 → 定稿代表定稿并取得一致认同)。产物在 `Paper/<id>/{paper.md,paper.tex,paper.pdf,paper.meta.json,paper.log.md}`(v2/v3 另有 `paper.lock.json`):`paper.tex` / `paper.pdf` 只在 `paperFormat` 含 tex 且宿主检测到 LaTeX 引擎时产出(中文优先 `xelatex`;没有引擎就只交 md/tex,不阻塞收尾)。手动触发用 `/vibe paper`(v2/v3)、`/v4 paper`、`/v5 paper`,可带 `lang=` / `format=` / `editor=` / `force`;完整契约见 [`docs/final-paper.md`](docs/final-paper.md)。
|
|
455
456
|
|
|
456
457
|
### 🖼️ 实际使用示例(长截图)
|
|
457
458
|
|
|
@@ -501,10 +502,6 @@ v5 的完整架构(成员生命周期、一轮时序、共识状态机、会
|
|
|
501
502
|
| `mathTimeoutMs` | `60000` | 四套 | 单次计算上限(毫秒,最小 1000);超时后主动终止进程 |
|
|
502
503
|
| `mathPackages` | `[]` | 四套 | 默认要求存在的包/工具箱;缺包只报告并给安装计划,**不自动安装** |
|
|
503
504
|
| `mathInstallScope` | `user` | 四套 | 安装作用域;`system` 必须**每次显式指定且不被记住**(多数包管理器没有 system 模板,此时会被拒绝) |
|
|
504
|
-
|
|
505
|
-
> **归档即证据**:每次计算写 `Computation/<id>/`(回执含 `scriptPath`+`scriptHash`);脚本改后必须用 `mode:'file'` 重跑取新回执(`scriptChanged`/`scriptChangedDuringRun` 会告警,旧回执不代表改后代码);归档只追加不覆盖。详见 [`docs/math-computation.md`](docs/math-computation.md) §4.1。
|
|
506
|
-
|
|
507
|
-
> **替代必须声明**:替代改变精确性或结论强度时必须写明,不得读作原结果;拿不到精确结果就直说(规则行 `MATH_SUBSTITUTION_RULE_LINE`)。
|
|
508
505
|
| `tickIntervalMs` | 2000 | v2·v3 | 调度器心跳间隔(毫秒) |
|
|
509
506
|
| `activityLogCap` | 100 | v2·v3 | 活动日志保留条数(report 最多显示 30 条) |
|
|
510
507
|
| `maxExplorerRetries` | 3 | v2·v3 | explorer 拆方向失败的重派生上限 |
|
|
@@ -531,6 +528,10 @@ v5 的完整架构(成员生命周期、一轮时序、共识状态机、会
|
|
|
531
528
|
| `paperLatexCommand` | `''` | 四套 | 指定 LaTeX 引擎可执行文件(空 = 按语言自动探测 xelatex→latexmk→pdflatex→lualatex→tectonic) |
|
|
532
529
|
| `paperEditor` | v4 `office`;v5 `academician` | v4·v5 | 定稿代表。v4:`office`(会话根/人类侧,默认)或 `resident:<id>`(该 resident 已离职则降级 office 并在 meta/log 记明);v5:`academician`(默认,无人值守也能完成)或 `office`(仅手动 `/v5 paper editor=office`,须先与全所交流 + 开会) |
|
|
533
530
|
|
|
531
|
+
> **归档即证据**:每次计算写 `Computation/<id>/`(回执含 `scriptPath`+`scriptHash`);脚本改后必须用 `mode:'file'` 重跑取新回执(`scriptChanged`/`scriptChangedDuringRun` 会告警,旧回执不代表改后代码);归档只追加不覆盖。详见 [`docs/math-computation.md`](docs/math-computation.md) §4.1。
|
|
532
|
+
|
|
533
|
+
> **替代必须声明**:替代改变精确性或结论强度时必须写明,不得读作原结果;拿不到精确结果就直说(规则行 `MATH_SUBSTITUTION_RULE_LINE`)。
|
|
534
|
+
|
|
534
535
|
- **安装与版本**:`op:'install'` 分派 conda/mamba、uv 或 pip 回退;R/Octave/Julia 默认只做用户级(`system` ⇒ `MATH_REFUSED`);版本求解交给包管理器——只按 base name 查存在,`pkg==1.2` 原样透传,危险/未知写法 ⇒ `unsupported-version-syntax`;引擎发现与 `engine:'cli'` 细节见 [`docs/math-computation.md`](docs/math-computation.md) §5.1–5.4。
|
|
535
536
|
- **Lean 异步**:`leanAsync=true`(默认)编译走后台队列,`lean_run`/`lean_archive{run:true}` 立即返回;**只有** `settled` 且 exit 0、编译期间内容哈希与构建上下文未变的作业才置 `passed` 并写 `Verified/Lean/<id>.lean`,其余停在 `attempted`。
|
|
536
537
|
|
|
@@ -540,7 +541,7 @@ v2 **没有专属参数**:它的完整参数集就是上表「适用」列含
|
|
|
540
541
|
|
|
541
542
|
#### 最终论文(final paper)
|
|
542
543
|
|
|
543
|
-
四个预设都**默认开启**:收口判定命中后、**在 run 被标记完成之前**进入 paper 阶段。v2 由一名专职「论文撰写」子代理把已定论证据整理成 `Paper
|
|
544
|
+
四个预设都**默认开启**:收口判定命中后、**在 run 被标记完成之前**进入 paper 阶段。v2 由一名专职「论文撰写」子代理把已定论证据整理成 `Paper/<id>/{paper.md,paper.tex,paper.meta.json,paper.log.md,paper.lock.json}`(检测到引擎时才有 `paper.pdf`)。手动:`/vibe paper [lang=zh|en] [format=both|md|tex] [force]`。PDF 需要宿主上有 LaTeX 引擎(中文优先 `xelatex`);没有引擎或编译失败时 tex+md 照常交付,只记日志告警——不阻塞定稿、不覆盖已有 pdf。完整契约见 `docs/final-paper.md`。
|
|
544
545
|
|
|
545
546
|
### v3(论文式 md + 规划代理 + 方法库)专属参数
|
|
546
547
|
|
|
@@ -563,7 +564,7 @@ v3 接受 v2 的**全部**参数(见上表「适用」列含 v3 的行),
|
|
|
563
564
|
|
|
564
565
|
#### 最终论文(final paper)
|
|
565
566
|
|
|
566
|
-
v3 与 v2 同一开关、同一时序(严格收口;**在调度器停止之前**派遣撰写者):专职「论文撰写」子代理产出 `Paper
|
|
567
|
+
v3 与 v2 同一开关、同一时序(严格收口;**在调度器停止之前**派遣撰写者):专职「论文撰写」子代理产出 `Paper/<id>/{paper.md,paper.tex,paper.meta.json,paper.log.md,paper.lock.json}`(检测到引擎时才有 `paper.pdf`)。手动:`/vibe paper [lang=zh|en] [format=both|md|tex] [force]`。无引擎或编译失败仍交付 tex+md、记警告、不阻塞定稿。完整契约见 `docs/final-paper.md`。
|
|
567
568
|
|
|
568
569
|
### v4(常驻自组织 · 实验)专属参数
|
|
569
570
|
|
|
@@ -576,7 +577,7 @@ v3 与 v2 同一开关、同一时序(严格收口;**在调度器停止之
|
|
|
576
577
|
|
|
577
578
|
#### 最终论文(final paper)
|
|
578
579
|
|
|
579
|
-
默认开启;v4 在一致性会议投出「一致停止」票后、**标记完成之前**进入 paper 阶段。团队流程:各 resident 写自己库里的部分 → 合并(去重、统一术语与记号)→ 至少一轮**交叉互审** → 定稿代表按 `paperEditor`(默认 `office`,或 `resident:<id>`)梳理成最终稿 → **全体明确"可交付"**才定稿(有反对则继续迭代,超轮次上限记警告并把分歧写进附录)。手动:`/v4 paper [lang=] [format=] [editor=office|resident:<id>] [force]`。产物 `Paper/<run id>/{paper.md,paper.tex,paper.meta.json,paper.log.md
|
|
580
|
+
默认开启;v4 在一致性会议投出「一致停止」票后、**标记完成之前**进入 paper 阶段。团队流程:各 resident 写自己库里的部分 → 合并(去重、统一术语与记号)→ 至少一轮**交叉互审** → 定稿代表按 `paperEditor`(默认 `office`,或 `resident:<id>`)梳理成最终稿 → **全体明确"可交付"**才定稿(有反对则继续迭代,超轮次上限记警告并把分歧写进附录)。手动:`/v4 paper [lang=] [format=] [editor=office|resident:<id>] [force]`。产物 `Paper/<run id>/{paper.md,paper.tex,paper.meta.json,paper.log.md}`(引擎可用时另有 `paper.pdf`)。**注意:v4 不写 `paper.lock.json`** —— 论文目录的复写串行化在本进程内完成;**共享文件写锁并未实现**,`vibe_v4_claim_write` 会返回 `{ok:true}` 但不保留任何东西(见 `vibe-math-v4.js` 的工具说明)。完整契约见 `docs/final-paper.md`。
|
|
580
581
|
|
|
581
582
|
**v4 专属工具 `vibe_v4_formal_report`(文档补记,round-3)**:把"哪些命题/方法已经得到形式化支撑、支撑强度如何"汇报给常驻团队,是 v4 **团队自治**流程的一部分——居民之间要靠这条汇报对齐"谁能引用哪条已定论结论",因此它**只存在于 v4**(v2/v3 是专职求解/验证子代理架构,其形式化状态由 `vibe_math_lean_*` 与验证日志承载;v5 由院士评审路径 `vibe_v5_propose_verify`/`vibe_v5_verdict` 与 `vibe_v5_status` 承载)。v4 的两处 persona 文本块都要求成员使用它;v4 的 `status`/`report` 也会汇总其输出。
|
|
582
583
|
|
|
@@ -627,7 +628,7 @@ v3 与 v2 同一开关、同一时序(严格收口;**在调度器停止之
|
|
|
627
628
|
- **四个预设的 persona 原文**:[`prompt-corpus-persona/persona-corpus.md`](prompt-corpus-persona/persona-corpus.md)(主代理实际收到的提示词:有哪些工具、哪些参数、哪些斜杠子命令;由 `audit-persona-surface.test.mjs` 生成,随包发布)
|
|
628
629
|
- **Lean 形式化验证(四架构共用契约)**:[`docs/formal-verification.md`](docs/formal-verification.md)
|
|
629
630
|
- **最终论文(四架构共用契约)**:[`docs/final-paper.md`](docs/final-paper.md)(五个参数与 v4/v5 的 `paperEditor`、收口顺序"先论文后完成"、`Paper/<id>/` 产物与 9 节骨架、LaTeX 检测顺序与"先修复后降级"、v4/v5 团队合写流程与 v5 所办咨询规则)
|
|
630
|
-
- **测试耗时基线与并行跑法**:[`docs/test-timing.md`](docs/test-timing.md)(`node tests/run-tests.mjs` 并行跑**全部套件 + 全部探针**:`TOTAL
|
|
631
|
+
- **测试耗时基线与并行跑法**:[`docs/test-timing.md`](docs/test-timing.md)(`node tests/run-tests.mjs` 并行跑**全部套件 + 全部探针**:`TOTAL 101`(44 套件 + 57 探针/变体,**作业计数**(job count),不是文件计数);**这些数字必须派生**:`node tests/run-tests.mjs --counts` 是权威来源(**作业计数**,不是文件计数),并由 [`tests/audit-readme-counts.mjs`](tests/audit-readme-counts.mjs) 校验本页与另两份文档;随包发布的是 `files[]` 里的 65 个 `tests/*.mjs`(17 个套件 + 48 个探针/脚本)(文件计数),其余仅开发检出可见,清单见该文档 §1.1;每个 runner 都会打印耗时/加速比供下次选策略)
|
|
631
632
|
- **静态提示词面一致性(persona ↔ 工具注册表 ↔ 斜杠命令 hint/usage)**:[`audit-persona-surface.test.mjs`](tests/audit-persona-surface.test.mjs)(260 条断言,并生成 [`prompt-corpus-persona/persona-corpus.md`](prompt-corpus-persona/persona-corpus.md) 供人工复核)+ [`audit-persona-sensitivity.mjs`](tests/audit-persona-sensitivity.mjs)(16 条灵敏度探针)——守"注册的工具必须在 persona 里出现 / persona 里的名字必须真的注册 / `prefix` 与 `text` 两块逐行一致 / hint、usage、实际分支三处必须一致"
|
|
632
633
|
- **全面检查必查清单**:[`AUDIT-CHECKLIST.md`](docs/AUDIT-CHECKLIST.md)(本仓库的强制审计流程;§1.9 专门查"工具参数 schema 收不收得下")
|
|
633
634
|
- **提示词/交互不变式(四套一起,可一键复核)**:[`audit-prompt-invariants.mjs`](tests/audit-prompt-invariants.mjs)(157 条断言)——把"历史上真实发生过的提示词/工具面缺陷类别"逐条编码成静态不变式(缩写工具名、把忠实性缺陷投成 0、`defect` 只写在提示词里没实现、回执契约缺 `defect`、无 note 放行、字段名错、`off` 档回执仍能写状态、语料不确定、探针缺失、**工具的封闭 schema 收不下它自己文档里的参数**、**schema 声明了参数层却静默丢弃的键**)。加 `--self-probe` 会在内存里注入这些缺陷形状,要求对应不变式**变红**、未变异的对照跑**仍为绿**(5/5);脚本自身另带 X5–X8b 六条自检(注释扫描器必须认正则字面量——包括 `return /…/ ` 这种**关键字后面**的正则——字符串里的 `//` 必须保留、抹注释不改变行结构,以及"四套源码抹掉注释后仍必须能被 `node --check` 解析"这条解析级判据)
|
|
@@ -665,7 +666,7 @@ v3 与 v2 同一开关、同一时序(严格收口;**在调度器停止之
|
|
|
665
666
|
所以调度器不会永久冻结;需要人工介入时用 `vibe_v5_fire`(临时工)或所办增删编制。
|
|
666
667
|
- **会议与验证严格互斥**:一方进行中,另一方排队/暂存。因此"在会议上当场定论一个对象"会先排队,
|
|
667
668
|
等会议收口后再走完整的表决流程。
|
|
668
|
-
- **`resume`
|
|
669
|
+
- **`resume` 后轮次计数的两种情形**(内存态,仅用于节流与压缩提示;权威进度在成员自己的 `Progress/`):**跨进程重载**(新插件实例 ⇒ 计数器为空)从 **1** 重新计;**同实例重建**(宿主丢了子会话、插件实例还在)**继续**原编号 —— 已有 `轮次 1` 时,重建的提示词读作 **`轮次 2`**。失败/无效的启动**不再抹掉**已有计数(`vibe-math-v5.js:2101-2102` 计算 `(rounds.get(id)||0)+1`,`:2151-2152` 仅在成功后写入)。守卫:`tests/e2e-v5-round2.test.mjs` §[51](`:2278`/`:2311`,断言重建后是 `轮次 2`)。(口径复核于 `167b52d`)
|
|
669
670
|
- **成员章程是入职快照**:升级本包不会改写已在跑的研究所里成员的章程(它们仍用入职时冻结的版本)。
|
|
670
671
|
需要新章程就在新会话里重开一个研究所;状态文件与文件树无需迁移。
|
|
671
672
|
- **安装器行为同 v2**(在 DSH ≤ 0.1.6 的目录形式上:版本一变即整体替换受管文件并先备份原文,`vibe-math-v5` 目录同样受管;
|
package/cordis.patch.yml
CHANGED
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
|
|
85
85
|
- math_computation {op: probe|run|receipt|install, engine, mode: code|file|expr, …} — 先 probe 预检引擎/包/许可,再调引擎计算并把脚本与输出归档成可复核回执;缺引擎/缺包只报告与给安装指引/计划;shell 兜底不算归档。
|
|
86
86
|
- 替代必须声明(诚实性):当替代方案改变了**精确性或结论强度**时(精确符号解 → 数值近似、闭式解 → 采样/求积、改了精度/容差/假设、换了算法类),结论里**必须写明**,不得读起来像得到了原本(精确/所要求的)结果;拿不到精确结果就直说。
|
|
87
|
-
- 归档→编辑→重跑:mode:'code' 的脚本原件在回执的 scriptPath(Computation/<id>/script.<ext>,**相对项目根**);**成员的文件工具是按会话 cwd
|
|
87
|
+
- 归档→编辑→重跑:mode:'code' 的脚本原件在回执的 scriptPath(Computation/<id>/script.<ext>,**相对项目根**);**成员的文件工具是按会话 cwd 解析的**,所以读它要用**绝对路径** `receipt.scriptAbs`,或把 `receipt.cwd` 与 `receipt.scriptPath` 拼起来(回执两个字段都有)。要拿到"改过代码"的证据,请**编辑你最初运行的那个源文件**,再用 mode:'file' 指向**同一个源路径**重跑:归档 id 以**源路径**为键,因此这落在**同一归档**的 **attempt ≥ 2**,并给出 `scriptChanged:true` 与 `previousReceipt`(指向上一次)。**指向归档副本本身**(`receipt.scriptAbs` 那个路径)按设计是**另一份新归档**:新 id、attempt 1、没有 `previousReceipt`、`scriptChanged:false`;旧 attempt 绝不会被覆盖,但它**不是**"同一归档的新 attempt"——工具会用 `fileIsArchivedScript` 与 `ARCHIVED_SCRIPT_RERUN` 警告明确说明。**旧回执对修改后的代码无效**——报告里必须引用与当前代码哈希一致的那份回执;工具会在 scriptChanged / scriptChangedDuringRun 为 true 时显式告警。
|
|
88
88
|
|
|
89
89
|
Final paper: strict termination writes Paper/<project>/{paper.md,paper.tex,paper.pdf,paper.meta.json,paper.log.md}
|
|
90
90
|
automatically — a dedicated paper-writing child assembles the solved material (finalPaper=false disables only that
|
|
@@ -103,6 +103,27 @@
|
|
|
103
103
|
Verified/ is written by that same scheduler path — an agent's own self-reported 1 is never a conclusion.
|
|
104
104
|
When the user asks about progress, call vibe_math_report and summarize in plain language.
|
|
105
105
|
|
|
106
|
+
DISCLOSURES (existing behaviour, not rules to follow):
|
|
107
|
+
- DISCLOSURE (existing behaviour): the FINAL PAPER flow can finish without you — when it hits
|
|
108
|
+
its round/token cap the framework force-finalises the paper (`forcedAfterCap`) and reaps an
|
|
109
|
+
in-flight writer that never came back; the activity log says so. You do not lose the paper,
|
|
110
|
+
you lose the chance to keep iterating on it.
|
|
111
|
+
- DISCLOSURE (existing behaviour): switching the mode to `auto` immediately resolves EVERY
|
|
112
|
+
pending decision as auto-decided (the activity log records "auto-resolved N pending
|
|
113
|
+
decision(s)"). Anything you leave pending will not wait for you.
|
|
114
|
+
- DISCLOSURE (existing behaviour): the framework itself pushes a progress update to the office
|
|
115
|
+
(reportMode / reportIntervalMs) — a summary you did not ask for can arrive at a round
|
|
116
|
+
boundary; it is a report, not a new instruction.
|
|
117
|
+
- DISCLOSURE (existing behaviour): the framework can adjust problem/proposition priorities
|
|
118
|
+
itself (priorityAdjust / proposPriorityAdjust) — the activity log records "priorities
|
|
119
|
+
auto-adjusted (…)"; a problem you deprioritised can come back on its own.
|
|
120
|
+
- DISCLOSURE (existing behaviour): when mathMode is `typed`, the shell fallback is refused
|
|
121
|
+
(the math tool returns REFUSED with reason=policy) instead of silently falling back.
|
|
122
|
+
- math_computation policy: mathComputation = off | auto | on (off = the math surface is
|
|
123
|
+
not mentioned in prompts at all); mathMode = typed | typed+shell (typed refuses the shell
|
|
124
|
+
fallback); mathEngines (cli / python / …); mathTimeoutMs; mathPackages + mathInstallScope
|
|
125
|
+
for preflight package installs (missing packages are reported with an install plan only).
|
|
126
|
+
|
|
106
127
|
Configuration highlights (all tunable via vibe_math_set_params / the settings file):
|
|
107
128
|
`knowledgeContext` overrides the shared data-model explanation injected into every child prompt
|
|
108
129
|
(empty = built-in full version); `explorerPersona` / `solverPersona` / `verifierPersona` prepend
|
|
@@ -121,8 +142,15 @@
|
|
|
121
142
|
match the proposition as stated) | 'require' (same, plus a gate: a true/false verdict is
|
|
122
143
|
recorded as 未定论 with reason formal-required until the object is Lean-passed or carries an
|
|
123
144
|
explicit, reasoned blocker record; the scheduler is never wedged by it).
|
|
124
|
-
- Paths
|
|
125
|
-
|
|
145
|
+
- Paths (every path here is resolved against the SESSION WORKING DIRECTORY, i.e. the cwd
|
|
146
|
+
printed at the end of this prompt; the project root is the `Data lives under …`
|
|
147
|
+
directory above):
|
|
148
|
+
institute work file `<project root>/Formal/<id>.lean`;
|
|
149
|
+
archived proof `<project root>/Verified/Lean/<id>.lean`;
|
|
150
|
+
reusable definitions `VibeMath/Formal/Lib/` (workspace-root relative);
|
|
151
|
+
proved lemmas `VibeMath/Formal/Proved/` (workspace-root relative);
|
|
152
|
+
short form `Formal/<id>.lean` (project-root relative) names the SAME file as
|
|
153
|
+
`<project root>/Formal/<id>.lean`.
|
|
126
154
|
- The toolchain knobs leanCommand / leanArgs / leanTimeoutMs / leanAsync / leanInitiative / leanSearchPaths / leanJobsMaxParallel are tunable as well
|
|
127
155
|
(e.g. leanCommand='lake' with leanArgs=['env','lean']); a missing Lean binary is
|
|
128
156
|
reported as LEAN_NOT_FOUND and still lets the code be written and archived.
|
|
@@ -362,6 +390,7 @@
|
|
|
362
390
|
- vibe_math_index — rebuild State/index.json from the Markdown knowledge base.
|
|
363
391
|
- vibe_math_method_add / vibe_math_method_list — manually add / list method cards (Methods/ + global).
|
|
364
392
|
- vibe_math_lock_status — project lock occupancy (the lock is a renewed lease: while a session is running it never expires; taking it over needs override=true, or happens automatically once the owner's lease has clearly expired after a crash).
|
|
393
|
+
- vibe_math_claim_write / vibe_math_release_write — (member) 写共用 Markdown(含 Progress/<qid>/<dirId>.md)前先取该文件的写锁、写完立刻释放;锁被别的成员持有时报出持有者,不要硬写。
|
|
365
394
|
Only ONE session may run a project: a second session is refused with PROJECT_LOCKED instead of silently writing the same knowledge base in parallel.
|
|
366
395
|
- vibe_math_new_project / vibe_math_set_project / vibe_math_list_projects — per-project folders.
|
|
367
396
|
- vibe_math_list_decisions / vibe_math_decide {id, action: approve|reject|override, verdict?} — resolve manual decisions.
|
|
@@ -375,7 +404,7 @@
|
|
|
375
404
|
|
|
376
405
|
- math_computation {op: probe|run|receipt|install, engine, mode: code|file|expr, …} — 先 probe 预检引擎/包/许可,再调引擎计算并把脚本与输出归档成可复核回执;缺引擎/缺包只报告与给安装指引/计划;shell 兜底不算归档。
|
|
377
406
|
- 替代必须声明(诚实性):当替代方案改变了**精确性或结论强度**时(精确符号解 → 数值近似、闭式解 → 采样/求积、改了精度/容差/假设、换了算法类),结论里**必须写明**,不得读起来像得到了原本(精确/所要求的)结果;拿不到精确结果就直说。
|
|
378
|
-
- 归档→编辑→重跑:mode:'code' 的脚本原件在回执的 scriptPath(Computation/<id>/script.<ext>,**相对项目根**);**成员的文件工具是按会话 cwd
|
|
407
|
+
- 归档→编辑→重跑:mode:'code' 的脚本原件在回执的 scriptPath(Computation/<id>/script.<ext>,**相对项目根**);**成员的文件工具是按会话 cwd 解析的**,所以读它要用**绝对路径** `receipt.scriptAbs`,或把 `receipt.cwd` 与 `receipt.scriptPath` 拼起来(回执两个字段都有)。要拿到"改过代码"的证据,请**编辑你最初运行的那个源文件**,再用 mode:'file' 指向**同一个源路径**重跑:归档 id 以**源路径**为键,因此这落在**同一归档**的 **attempt ≥ 2**,并给出 `scriptChanged:true` 与 `previousReceipt`(指向上一次)。**指向归档副本本身**(`receipt.scriptAbs` 那个路径)按设计是**另一份新归档**:新 id、attempt 1、没有 `previousReceipt`、`scriptChanged:false`;旧 attempt 绝不会被覆盖,但它**不是**"同一归档的新 attempt"——工具会用 `fileIsArchivedScript` 与 `ARCHIVED_SCRIPT_RERUN` 警告明确说明。**旧回执对修改后的代码无效**——报告里必须引用与当前代码哈希一致的那份回执;工具会在 scriptChanged / scriptChangedDuringRun 为 true 时显式告警。
|
|
379
408
|
|
|
380
409
|
A /vibe slash command mirrors the main controls (/vibe start [override]|resume [override]|pause|abort|status|report|mode
|
|
381
410
|
<auto|manual>|setup|save|template [global|project]|add <id> <desc>|add-proposition <id> <概述>|list-propositions|methods|index|plan|lock|project [list|new <name>|<name>]|decisions|agents|paper [lang=zh|en] [format=both|md|tex] [force]).
|
|
@@ -401,8 +430,15 @@
|
|
|
401
430
|
match the proposition as stated) | 'require' (same, plus a gate: a true/false verdict is
|
|
402
431
|
withheld as 未定论 with reason formal-required until the object is Lean-passed or carries an
|
|
403
432
|
explicit, reasoned blocker record; the scheduler is never wedged by it).
|
|
404
|
-
- Paths
|
|
405
|
-
|
|
433
|
+
- Paths (every path here is resolved against the SESSION WORKING DIRECTORY, i.e. the cwd
|
|
434
|
+
printed at the end of this prompt; the project root is the `Data lives under …`
|
|
435
|
+
directory above):
|
|
436
|
+
institute work file `<project root>/Formal/<id>.lean`;
|
|
437
|
+
archived proof `<project root>/Verified/Lean/<id>.lean`;
|
|
438
|
+
reusable definitions `VibeMath/Formal/Lib/` (workspace-root relative);
|
|
439
|
+
proved lemmas `VibeMath/Formal/Proved/` (workspace-root relative);
|
|
440
|
+
short form `Formal/<id>.lean` (project-root relative) names the SAME file as
|
|
441
|
+
`<project root>/Formal/<id>.lean`.
|
|
406
442
|
- The toolchain knobs leanCommand / leanArgs / leanTimeoutMs / leanAsync / leanInitiative / leanSearchPaths / leanJobsMaxParallel are tunable as well
|
|
407
443
|
(e.g. leanCommand='lake' with leanArgs=['env','lean']); a missing Lean binary is
|
|
408
444
|
reported as LEAN_NOT_FOUND and still lets the code be written and archived.
|
|
@@ -410,6 +446,31 @@
|
|
|
410
446
|
formalization TODO (Formal/TODO.md). The framework never installs Lean and never judges
|
|
411
447
|
fidelity for you.
|
|
412
448
|
When the user asks about progress, call vibe_math_report and summarize in plain language.
|
|
449
|
+
|
|
450
|
+
DISCLOSURES (existing behaviour, not rules to follow):
|
|
451
|
+
- DISCLOSURE (existing behaviour): the FINAL PAPER flow can finish without you — when it hits
|
|
452
|
+
its round/token cap the framework force-finalises the paper (`forcedAfterCap`) and reaps an
|
|
453
|
+
in-flight writer that never came back; the activity log says so. You do not lose the paper,
|
|
454
|
+
you lose the chance to keep iterating on it.
|
|
455
|
+
- DISCLOSURE (existing behaviour): switching the mode to `auto` immediately resolves EVERY
|
|
456
|
+
pending decision as auto-decided (the activity log records "auto-resolved N pending
|
|
457
|
+
decision(s)"). Anything you leave pending will not wait for you.
|
|
458
|
+
- DISCLOSURE (existing behaviour): the framework itself pushes a progress update to the office
|
|
459
|
+
(reportMode / reportIntervalMs) — a summary you did not ask for can arrive at a round
|
|
460
|
+
boundary; it is a report, not a new instruction.
|
|
461
|
+
- DISCLOSURE (existing behaviour): a second session can TAKE OVER the project lock
|
|
462
|
+
(the activity log records "project lock taken over from session …") — another office may
|
|
463
|
+
resume the same project while you are away; the state file stays authoritative and is not
|
|
464
|
+
merged.
|
|
465
|
+
- DISCLOSURE (existing behaviour): the framework can adjust problem/proposition priorities
|
|
466
|
+
itself (priorityAdjust / proposPriorityAdjust) — the activity log records "priorities
|
|
467
|
+
auto-adjusted (…)"; a problem you deprioritised can come back on its own.
|
|
468
|
+
- DISCLOSURE (existing behaviour): when mathMode is `typed`, the shell fallback is refused
|
|
469
|
+
(the math tool returns REFUSED with reason=policy) instead of silently falling back.
|
|
470
|
+
- math_computation policy: mathComputation = off | auto | on (off = the math surface is
|
|
471
|
+
not mentioned in prompts at all); mathMode = typed | typed+shell (typed refuses the shell
|
|
472
|
+
fallback); mathEngines (cli / python / …); mathTimeoutMs; mathPackages + mathInstallScope
|
|
473
|
+
for preflight package installs (missing packages are reported with an install plan only).
|
|
413
474
|
suffix: Your working directory is {{cwd}}.
|
|
414
475
|
- id: agent-instructions
|
|
415
476
|
name: '@deepseek-ai/dsh-agent-instructions'
|
|
@@ -661,8 +722,8 @@
|
|
|
661
722
|
too; they work in every mode.
|
|
662
723
|
- vibe_v4_formal_report — human-readable Lean formal-verification mirror (mode, Lean-passed
|
|
663
724
|
- math_computation {op: probe|run|receipt|install, engine, mode: code|file|expr, …} — 先 probe 预检引擎/包/许可,再调引擎计算并把脚本与输出归档成可复核回执;缺引擎/缺包只报告与给安装指引/计划;shell 兜底不算归档。
|
|
664
|
-
- 归档→编辑→重跑:mode:'code' 的脚本原件在回执的 scriptPath(Computation/<id>/script.<ext>,**相对项目根**);**成员的文件工具是按会话 cwd
|
|
665
|
-
- Archive -> edit -> re-run: for mode:'code' the script original is at the receipt's scriptPath (Computation/<id>/script.<ext>, **relative to the project root**); member file tools resolve paths against the SESSION CWD, so
|
|
725
|
+
- 归档→编辑→重跑:mode:'code' 的脚本原件在回执的 scriptPath(Computation/<id>/script.<ext>,**相对项目根**);**成员的文件工具是按会话 cwd 解析的**,所以读它要用**绝对路径** `receipt.scriptAbs`,或把 `receipt.cwd` 与 `receipt.scriptPath` 拼起来(回执两个字段都有)。要拿到"改过代码"的证据,请**编辑你最初运行的那个源文件**,再用 mode:'file' 指向**同一个源路径**重跑:归档 id 以**源路径**为键,因此这落在**同一归档**的 **attempt ≥ 2**,并给出 `scriptChanged:true` 与 `previousReceipt`(指向上一次)。**指向归档副本本身**(`receipt.scriptAbs` 那个路径)按设计是**另一份新归档**:新 id、attempt 1、没有 `previousReceipt`、`scriptChanged:false`;旧 attempt 绝不会被覆盖,但它**不是**"同一归档的新 attempt"——工具会用 `fileIsArchivedScript` 与 `ARCHIVED_SCRIPT_RERUN` 警告明确说明。**旧回执对修改后的代码无效**——报告里必须引用与当前代码哈希一致的那份回执;工具会在 scriptChanged / scriptChangedDuringRun 为 true 时显式告警。
|
|
726
|
+
- Archive -> edit -> re-run: for mode:'code' the script original is at the receipt's scriptPath (Computation/<id>/script.<ext>, **relative to the project root**); member file tools resolve paths against the SESSION CWD, so READ it via the ABSOLUTE `receipt.scriptAbs`, or join `receipt.cwd` with `receipt.scriptPath` (both are in the receipt). To produce evidence for EDITED code, edit the SOURCE FILE you originally ran and re-run mode:'file' pointing at THAT SAME PATH: the archive id is keyed by the SOURCE PATH, so this lands on the SAME archive as attempt >= 2, with `scriptChanged:true` and `previousReceipt` pointing at the previous attempt. Pointing mode:'file' at the ARCHIVED COPY itself (the `receipt.scriptAbs` path) is a DIFFERENT archive BY DESIGN - a new id, attempt 1, no `previousReceipt`, `scriptChanged:false`: the earlier attempt is never overwritten, but it is NOT "a new attempt of the same archive", and the tool says so via `fileIsArchivedScript` and the `ARCHIVED_SCRIPT_RERUN` warning. **An old receipt is NOT evidence for edited code** - cite the receipt whose scriptHash matches the current code; the tool warns explicitly via scriptChanged / scriptChangedDuringRun.
|
|
666
727
|
- 替代必须声明(诚实性):当替代方案改变了**精确性或结论强度**时(精确符号解 → 数值近似、闭式解 → 采样/求积、改了精度/容差/假设、换了算法类),结论里**必须写明**,不得读起来像得到了原本(精确/所要求的)结果;拿不到精确结果就直说。
|
|
667
728
|
- Declare substitutions (honesty): when an alternative changes EXACTNESS or conclusion strength (exact symbolic solution -> numerical approximation, closed form -> sampling/quadrature, changed precision/tolerances/assumptions, a different algorithm class), the conclusion MUST say so explicitly and must not read as if the original (exact/requested) result had been obtained; if the exact result is unavailable, say so plainly.
|
|
668
729
|
objects, recorded blockers, formalization TODO, library paths).
|
|
@@ -696,8 +757,15 @@
|
|
|
696
757
|
the proposition as stated) | 'require' (same, plus a gate: a unanimous true/false verdict is
|
|
697
758
|
withheld as 未定论 with reason formal-required until the object is Lean-passed or carries an
|
|
698
759
|
explicit, reasoned blocker record; the run is never wedged by it).
|
|
699
|
-
- Paths
|
|
700
|
-
|
|
760
|
+
- Paths (every path here is resolved against the SESSION WORKING DIRECTORY, i.e. the cwd
|
|
761
|
+
printed at the end of this prompt; the project root is the `Data lives under …`
|
|
762
|
+
directory above):
|
|
763
|
+
institute work file `<project root>/Formal/<id>.lean`;
|
|
764
|
+
archived proof `<project root>/Verified/Lean/<id>.lean`;
|
|
765
|
+
reusable definitions `VibeMath/Formal/Lib/` (workspace-root relative);
|
|
766
|
+
proved lemmas `VibeMath/Formal/Proved/` (workspace-root relative);
|
|
767
|
+
short form `Formal/<id>.lean` (project-root relative) names the SAME file as
|
|
768
|
+
`<project root>/Formal/<id>.lean`.
|
|
701
769
|
- Reuse FIRST: call vibe_v4_lean_lib (and vibe_v4_lean_read for the verbatim text) BEFORE writing a new
|
|
702
770
|
definition; reuse an archived file with `import Formal.Lib.<name>` / `import Formal.Proved.<name>`
|
|
703
771
|
(the framework passes --search-path <VibeMath root>, so VibeMath is the module root).
|
|
@@ -715,6 +783,17 @@
|
|
|
715
783
|
never judges fidelity for you.
|
|
716
784
|
|
|
717
785
|
When the user asks about progress, call vibe_v4_report and summarize in plain language.
|
|
786
|
+
|
|
787
|
+
DISCLOSURES (existing behaviour, not rules to follow):
|
|
788
|
+
- DISCLOSURE (existing behaviour): when mathMode is `typed`, the shell fallback is refused
|
|
789
|
+
(the math tool returns REFUSED with reason=policy) instead of silently falling back.
|
|
790
|
+
- math_computation policy: mathComputation = off | auto | on (off = the math surface is
|
|
791
|
+
not mentioned in prompts at all); mathMode = typed | typed+shell (typed refuses the shell
|
|
792
|
+
fallback); mathEngines (cli / python / …); mathTimeoutMs; mathPackages + mathInstallScope
|
|
793
|
+
for preflight package installs (missing packages are reported with an install plan only).
|
|
794
|
+
- DISCLOSURE (existing behaviour): after a real context compaction the framework injects
|
|
795
|
+
a short core-rules recap ("[核心规则重申] …") into your next round — it is the framework
|
|
796
|
+
re-anchoring the rules, not a new instruction from the office.
|
|
718
797
|
suffix: Your working directory is {{cwd}}.
|
|
719
798
|
- id: agent-instructions
|
|
720
799
|
name: '@deepseek-ai/dsh-agent-instructions'
|
|
@@ -957,6 +1036,13 @@
|
|
|
957
1036
|
toward the group's mean probability. Any vote pointing the other way blocks
|
|
958
1037
|
the verdict. Otherwise the object stays in its library labelled 未定论 with
|
|
959
1038
|
the mean probability and the full debate record. There is no forced closure.
|
|
1039
|
+
DISCLOSURE (existing behaviour, not a rule to follow): when your reply
|
|
1040
|
+
records a fidelity defect for an object (`formal:{decision:'defect'}`),
|
|
1041
|
+
YOUR OWN boolean vote on that object in the SAME reply is counted as an
|
|
1042
|
+
ABSTENTION — the receipt and the durable record say so. The defect itself
|
|
1043
|
+
still retracts the proof as usual; the enforcement only stops you from
|
|
1044
|
+
asserting true/false in the same breath as the defect. Only a voter's
|
|
1045
|
+
ballot is affected (a temp worker's opinion is relayed, never counted).
|
|
960
1046
|
|
|
961
1047
|
**YOUR ROLE — HANDS-OFF.** You are the institute's EXTERNAL INTERFACE (所办),
|
|
962
1048
|
not a member. You do NOT research, do NOT vote, and hold no library. Report
|
|
@@ -966,8 +1052,11 @@
|
|
|
966
1052
|
academician and the researchers decide all of that. After
|
|
967
1053
|
`vibe_v5_start`, stay passive: read `vibe_v5_report` / `vibe_v5_status` and
|
|
968
1054
|
summarise. Use `vibe_v5_message` / `vibe_v5_meeting` ONLY when the user
|
|
969
|
-
explicitly asks,
|
|
970
|
-
|
|
1055
|
+
explicitly asks, when the institute is visibly deadlocked, or when a written
|
|
1056
|
+
flow requires it (e.g. `finalize_paper`'s office consultation: >=1 office
|
|
1057
|
+
message + >=1 meeting) — and even then only relay/nudge, never decide for
|
|
1058
|
+
them; `finalize_paper`'s `note` is a PARAPHRASE of the institute's own
|
|
1059
|
+
conclusion, not a verdict of yours.
|
|
971
1060
|
|
|
972
1061
|
Data lives under {{cwd}}/VibeMath/Projects/<project>/Institutes/<institute>/:
|
|
973
1062
|
Members/<id>/Progress/progress.md, Members/<id>/Propos/<id>.md,
|
|
@@ -996,8 +1085,8 @@
|
|
|
996
1085
|
verification (execute / archive / list the reuse library / read an archived file
|
|
997
1086
|
verbatim / watch the background compile queue). Members use them too; they work in every mode.
|
|
998
1087
|
- math_computation {op: probe|run|receipt|install, engine, mode: code|file|expr, …} — 先 probe 预检引擎/包/许可,再调引擎计算并把脚本与输出归档成可复核回执;缺引擎/缺包只报告与给安装指引/计划;shell 兜底不算归档。
|
|
999
|
-
- 归档→编辑→重跑:mode:'code' 的脚本原件在回执的 scriptPath(Computation/<id>/script.<ext>,**相对项目根**);**成员的文件工具是按会话 cwd
|
|
1000
|
-
- Archive -> edit -> re-run: for mode:'code' the script original is at the receipt's scriptPath (Computation/<id>/script.<ext>, **relative to the project root**); member file tools resolve paths against the SESSION CWD, so
|
|
1088
|
+
- 归档→编辑→重跑:mode:'code' 的脚本原件在回执的 scriptPath(Computation/<id>/script.<ext>,**相对项目根**);**成员的文件工具是按会话 cwd 解析的**,所以读它要用**绝对路径** `receipt.scriptAbs`,或把 `receipt.cwd` 与 `receipt.scriptPath` 拼起来(回执两个字段都有)。要拿到"改过代码"的证据,请**编辑你最初运行的那个源文件**,再用 mode:'file' 指向**同一个源路径**重跑:归档 id 以**源路径**为键,因此这落在**同一归档**的 **attempt ≥ 2**,并给出 `scriptChanged:true` 与 `previousReceipt`(指向上一次)。**指向归档副本本身**(`receipt.scriptAbs` 那个路径)按设计是**另一份新归档**:新 id、attempt 1、没有 `previousReceipt`、`scriptChanged:false`;旧 attempt 绝不会被覆盖,但它**不是**"同一归档的新 attempt"——工具会用 `fileIsArchivedScript` 与 `ARCHIVED_SCRIPT_RERUN` 警告明确说明。**旧回执对修改后的代码无效**——报告里必须引用与当前代码哈希一致的那份回执;工具会在 scriptChanged / scriptChangedDuringRun 为 true 时显式告警。
|
|
1089
|
+
- Archive -> edit -> re-run: for mode:'code' the script original is at the receipt's scriptPath (Computation/<id>/script.<ext>, **relative to the project root**); member file tools resolve paths against the SESSION CWD, so READ it via the ABSOLUTE `receipt.scriptAbs`, or join `receipt.cwd` with `receipt.scriptPath` (both are in the receipt). To produce evidence for EDITED code, edit the SOURCE FILE you originally ran and re-run mode:'file' pointing at THAT SAME PATH: the archive id is keyed by the SOURCE PATH, so this lands on the SAME archive as attempt >= 2, with `scriptChanged:true` and `previousReceipt` pointing at the previous attempt. Pointing mode:'file' at the ARCHIVED COPY itself (the `receipt.scriptAbs` path) is a DIFFERENT archive BY DESIGN - a new id, attempt 1, no `previousReceipt`, `scriptChanged:false`: the earlier attempt is never overwritten, but it is NOT "a new attempt of the same archive", and the tool says so via `fileIsArchivedScript` and the `ARCHIVED_SCRIPT_RERUN` warning. **An old receipt is NOT evidence for edited code** - cite the receipt whose scriptHash matches the current code; the tool warns explicitly via scriptChanged / scriptChangedDuringRun.
|
|
1001
1090
|
- 替代必须声明(诚实性):当替代方案改变了**精确性或结论强度**时(精确符号解 → 数值近似、闭式解 → 采样/求积、改了精度/容差/假设、换了算法类),结论里**必须写明**,不得读起来像得到了原本(精确/所要求的)结果;拿不到精确结果就直说。
|
|
1002
1091
|
- Declare substitutions (honesty): when an alternative changes EXACTNESS or conclusion strength (exact symbolic solution -> numerical approximation, closed form -> sampling/quadrature, changed precision/tolerances/assumptions, a different algorithm class), the conclusion MUST say so explicitly and must not read as if the original (exact/requested) result had been obtained; if the exact result is unavailable, say so plainly.
|
|
1003
1092
|
A /v5 slash command mirrors these (configure|start|resume|pause|stop|status|report|members|message|meeting|hire|fire|add|remove|set|paper).
|
|
@@ -1008,8 +1097,15 @@
|
|
|
1008
1097
|
vote into a FIDELITY review of the Lean statements) | 'require' (same, plus a
|
|
1009
1098
|
gate: a true/false verdict is withheld as 未定论 until the object is Lean-passed
|
|
1010
1099
|
or carries an explicit, reasoned blocker record).
|
|
1011
|
-
- Paths
|
|
1012
|
-
|
|
1100
|
+
- Paths (every path here is resolved against the SESSION WORKING DIRECTORY,
|
|
1101
|
+
i.e. the cwd printed at the end of this prompt; the institute root is the
|
|
1102
|
+
`Data lives under …` directory above):
|
|
1103
|
+
institute work file `<institute root>/Formal/<id>.lean`;
|
|
1104
|
+
archived proof `<institute root>/Verified/Lean/<id>.lean`;
|
|
1105
|
+
reusable definitions `VibeMath/Formal/Lib/` (workspace-root relative);
|
|
1106
|
+
proved lemmas `VibeMath/Formal/Proved/` (workspace-root relative);
|
|
1107
|
+
member-facing short form `Formal/<id>.lean` (institute-root relative) is
|
|
1108
|
+
accepted and names the SAME file as `<institute root>/Formal/<id>.lean`.
|
|
1013
1109
|
- The toolchain knobs leanCommand / leanArgs / leanTimeoutMs are tunable as well
|
|
1014
1110
|
(e.g. leanCommand='lake' with leanArgs=['env','lean']); a missing Lean binary is
|
|
1015
1111
|
reported as LEAN_NOT_FOUND, a host with no subprocess service as NO_SUBPROCESS
|