Skip to content

Commit e45b672

Browse files
committed
docs+spec: close lineage gaps and harden placeholder outputs
1 parent bf396f0 commit e45b672

24 files changed

Lines changed: 1364 additions & 129 deletions

docs/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ This documentation is organized by audience and workflow, not by who happened to
4141

4242
### Reference and Specifications
4343
- [Specification Set](./spec/): Canonical feature contracts (SPEC-20 through SPEC-27).
44+
- [Spec Lineage Status](./spec/SPEC-LINEAGE-STATUS.md): How origin-era design/migration specs map to current live status.
4445
- [Execution Plan](./execution-plan/README.md): Program-level planning, evidence, and governance.
4546
- [Architecture Decisions](./adr/): Long-lived technical decisions and context.
4647
- [Glossary](./glossary.md): Shared terms and definitions.

docs/execution-plan/STATUS.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ Last updated: 2026-02-20
100100
| R47 | Closed M7-T09 by delivering `io_rflx_interop.v0` fixture/calibration artifacts, executable RFLX fixture gate coverage, and refreshed RFLX/contract/perf evidence | `evidence/2026-02-20/milestone-M7/M7-T09-validation-summary.md` |
101101
| R48 | Closed M7-T10 by reconciling SPEC-20..27 status/governance metadata, refreshing consumer claim evidence, and assigning post-M7 up-next critical gaps to `loop-azq` | `evidence/2026-02-20/milestone-M7/M7-T10-validation-summary.md` |
102102
| R49 | Closed post-M7 reconciliation drift by aligning execution-plan tracker docs with live Beads state (`loop-azq` closed, no active implementation backlog) | `loop-k7d` + updated tracker docs |
103+
| R50 | Closed lineage-closure tranche by reconciling origin-era historical checklists (`[historical target]` semantics), hardening placeholder emitters (`draft:` + `HUMAN_REQUIRED`), and re-running `make check`/`make verify` plus repo-local `dp` governance pipelines with passing evidence | `evidence/2026-02-20/lineage-closure/lineage-completeness-report.md` |
103104

104105
## Top Priority Queue (Next 9 Tasks)
105106

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
{
2+
"stage": "pre-commit",
3+
"policy": "/Users/rand/src/loop/dp-policy.json",
4+
"cwd": "/Users/rand/src/loop",
5+
"ok": true,
6+
"steps": [
7+
{
8+
"name": "check",
9+
"command": [
10+
"make",
11+
"check"
12+
],
13+
"exit_code": 0,
14+
"duration_ms": 5053,
15+
"stdout": "cd rlm-core && cargo check --quiet\ncd rlm-core && cargo test --quiet\n\nrunning 657 tests\n....................................................................................... 87/657\n....................................................................................... 174/657\n................................................................iii.................... 261/657\n....................................................................................... 348/657\n....................................................................................... 435/657\n..........................i....i..iiiii................................................ 522/657\n....................................................................................... 609/657\n................................................\ntest result: ok. 647 passed; 0 failed; 10 ignored; 0 measured; 0 filtered out; finished in 0.78s\n\n\nrunning 40 tests\niiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii....\ntest result: ok. 4 passed; 0 failed; 36 ignored; 0 measured; 0 filtered out; finished in 2.86s\n\n",
16+
"stderr": "warning: unused import: `std::path::PathBuf`\n --> src/dp_integration/review.rs:563:9\n |\n563 | use std::path::PathBuf;\n | ^^^^^^^^^^^^^^^^^^\n |\n = note: `#[warn(unused_imports)]` on by default\n\nwarning: unused imports: `LeanRef`, `LinkSource`, `LinkType`, and `Link`\n --> src/sync/engine.rs:624:24\n |\n624 | use crate::topos::{LeanRef, Link, LinkSource, LinkType, ToposRef};\n | ^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^\n\nwarning: unused variable: `action_id`\n --> src/reasoning/store.rs:743:14\n |\n743 | let (action_id, outcome_id) = trace.log_action(&chosen, \"Action\", \"Outcome\");\n | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_action_id`\n |\n = note: `#[warn(unused_variables)]` on by default\n\nwarning: unused variable: `questions`\n --> src/spec_agent/agent.rs:658:13\n |\n658 | let questions = agent.refine(&mut ctx, &[]).await.unwrap();\n | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_questions`\n\nwarning: function `probability_with_edges` is never used\n --> src/epistemic/proptest.rs:27:8\n |\n27 | fn probability_with_edges() -> impl Strategy<Value = f64> {\n | ^^^^^^^^^^^^^^^^^^^^^^\n |\n = note: `#[warn(dead_code)]` on by default\n\nwarning: fields `code`, `language`, `max_issues`, `vulnerabilities`, `severity`, and `confidence` are never read\n --> src/signature/mod.rs:687:13\n |\n685 | struct AnalyzeCode {\n | ----------- fields in this struct\n686 | #[input(desc = \"Source code to analyze\")]\n687 | code: String,\n | ^^^^\n...\n690 | language: String,\n | ^^^^^^^^\n...\n693 | max_issues: Option<u32>,\n | ^^^^^^^^^^\n...\n696 | vulnerabilities: Vec<String>,\n | ^^^^^^^^^^^^^^^\n...\n699 | severity: String,\n | ^^^^^^^^\n...\n702 | confidence: f64,\n | ^^^^^^^^^^\n\nwarning: multiple fields are never read\n --> src/signature/mod.rs:796:13\n |\n794 | struct AllTypes {\n | -------- fields in this struct\n795 | #[input(desc = \"A string\")]\n796 | string_field: String,\n | ^^^^^^^^^^^^\n...\n799 | int_field: i32,\n | ^^^^^^^^^\n...\n802 | float_field: f64,\n | ^^^^^^^^^^^\n...\n805 | bool_field: bool,\n | ^^^^^^^^^^\n...\n808 | list_field: Vec<String>,\n | ^^^^^^^^^^\n...\n811 | optional_list_field: Option<Vec<i32>>,\n | ^^^^^^^^^^^^^^^^^^^\n...\n814 | array_field: [i32; 2],\n | ^^^^^^^^^^^\n...\n817 | output: String,\n | ^^^^^^\n\nwarning: fields `severity` and `category` are never read\n --> src/signature/mod.rs:838:13\n |\n835 | struct EnumAnnotated {\n | ------------- fields in this struct\n...\n838 | severity: String,\n | ^^^^^^^^\n...\n842 | category: String,\n | ^^^^^^^^\n\n",
17+
"ok": true
18+
},
19+
{
20+
"name": "rustdoc-contract",
21+
"command": [
22+
"make",
23+
"rustdoc-check"
24+
],
25+
"exit_code": 0,
26+
"duration_ms": 168,
27+
"stdout": "cd rlm-core && RUSTDOCFLAGS=\"-D warnings\" cargo doc --no-deps\n",
28+
"stderr": " Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.10s\n Generated /Users/rand/src/loop/rlm-core/target/doc/rlm_core/index.html\n",
29+
"ok": true
30+
}
31+
]
32+
}

docs/execution-plan/evidence/2026-02-20/lineage-closure/dp-enforce-pre-push.json

Lines changed: 80 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
{
2+
"stage": "review",
3+
"policy": "/Users/rand/src/loop/dp-policy.json",
4+
"cwd": "/Users/rand/src/loop",
5+
"ok": true,
6+
"steps": [
7+
{
8+
"name": "typecheck",
9+
"command": [
10+
"make",
11+
"typecheck"
12+
],
13+
"exit_code": 0,
14+
"duration_ms": 169,
15+
"stdout": "cd rlm-core && cargo check --quiet\n",
16+
"stderr": "",
17+
"ok": true
18+
},
19+
{
20+
"name": "rustdoc-contract",
21+
"command": [
22+
"make",
23+
"rustdoc-check"
24+
],
25+
"exit_code": 0,
26+
"duration_ms": 175,
27+
"stdout": "cd rlm-core && RUSTDOCFLAGS=\"-D warnings\" cargo doc --no-deps\n",
28+
"stderr": " Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.11s\n Generated /Users/rand/src/loop/rlm-core/target/doc/rlm_core/index.html\n",
29+
"ok": true
30+
}
31+
]
32+
}

docs/execution-plan/evidence/2026-02-20/lineage-closure/dp-verify.json

Lines changed: 68 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
# Lineage Completeness Report
2+
Date: 2026-02-20
3+
Issue: `loop-dge.1`
4+
Repository SHA: _captured at commit time_
5+
6+
## Objective
7+
8+
Validate, with runnable evidence, that Loop is coherent and functionally complete against the full spec lineage (origin-era design/migration docs through SPEC-20..27), and not just the most recent milestone tranche.
9+
10+
## Scope and Method
11+
12+
1. Historical-spec reconciliation:
13+
- Audited all docs with unresolved checklist syntax.
14+
- Converted origin-era planning checklists to explicit `[historical target]` markers.
15+
- Added lineage map: `/Users/rand/src/loop/docs/spec/SPEC-LINEAGE-STATUS.md`.
16+
17+
2. Placeholder hardening:
18+
- Removed runtime `TODO` placeholder emitters from proof handoff/spec-agent draft mode paths.
19+
- Preserved protocol behavior (`sorry` remains for Lean human-loop semantics where required).
20+
- Added property-based regression coverage in `spec_agent::generators`.
21+
22+
3. Empirical gate execution:
23+
- `UV_CACHE_DIR=.uv-cache make check`
24+
- `UV_CACHE_DIR=.uv-cache make verify`
25+
- `./scripts/dp review --policy dp-policy.json --json`
26+
- `./scripts/dp verify --policy dp-policy.json --json`
27+
- `./scripts/dp enforce pre-commit --policy dp-policy.json --json`
28+
- `./scripts/dp enforce pre-push --policy dp-policy.json --json`
29+
30+
## Evidence Artifacts
31+
32+
- `/Users/rand/src/loop/docs/execution-plan/evidence/2026-02-20/lineage-closure/make-check.txt`
33+
- `/Users/rand/src/loop/docs/execution-plan/evidence/2026-02-20/lineage-closure/make-verify.txt`
34+
- `/Users/rand/src/loop/docs/execution-plan/evidence/2026-02-20/lineage-closure/dp-review.json`
35+
- `/Users/rand/src/loop/docs/execution-plan/evidence/2026-02-20/lineage-closure/dp-verify.json`
36+
- `/Users/rand/src/loop/docs/execution-plan/evidence/2026-02-20/lineage-closure/dp-enforce-pre-commit.json`
37+
- `/Users/rand/src/loop/docs/execution-plan/evidence/2026-02-20/lineage-closure/dp-enforce-pre-push.json`
38+
39+
## Results
40+
41+
1. Gate chain:
42+
- `make check`: pass.
43+
- `make verify`: pass.
44+
- `VG-PY-INTEGRATION-001`: pass.
45+
- `VG-PROPTEST-001`: pass (deterministic seeded scopes executed).
46+
- `VG-CLAUDE-ADAPTER-E2E-001`: pass (2 OODA scenario tests executed).
47+
- `dp` pipelines (`review`, `verify`, `enforce pre-commit`, `enforce pre-push`): all `ok=true`.
48+
49+
2. Historical lineage clarity:
50+
- Open-checklist ambiguity removed from origin-era planning artifacts.
51+
- Remaining unchecked checkboxes exist only in the troubleshooting incident template by design.
52+
53+
3. Placeholder behavior:
54+
- Spec-agent draft mode now emits `draft:` annotations with executable stubs and no `TODO`/`sorry` tokens.
55+
- Proof human-loop marker now uses explicit `HUMAN_REQUIRED` context instead of TODO text.
56+
- Property-based guard prevents reintroduction of TODO tokens across spec generation modes.
57+
58+
## Residual Boundaries (Documented, Not Silent Gaps)
59+
60+
- Full Python-orchestrator replacement targets in migration docs remain explicitly bounded by binding-surface availability and are tracked as deferred/out-of-scope where documented.
61+
- Test warnings (unused imports/fields in unrelated modules) remain non-failing and pre-existing; no new failing quality gates were introduced.
62+
63+
## Conclusion
64+
65+
Within this repository’s executable scope, the full origin-to-present spec lineage is now reconciled with live runtime truth, placeholder emitters are hardened, and governance/runtime gates pass end to end with captured evidence.
Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
cd rlm-core && cargo check --quiet
2+
cd rlm-core && cargo test --quiet
3+
warning: unused import: `std::path::PathBuf`
4+
--> src/dp_integration/review.rs:563:9
5+
|
6+
563 | use std::path::PathBuf;
7+
| ^^^^^^^^^^^^^^^^^^
8+
|
9+
= note: `#[warn(unused_imports)]` on by default
10+
11+
warning: unused imports: `LeanRef`, `LinkSource`, `LinkType`, and `Link`
12+
--> src/sync/engine.rs:624:24
13+
|
14+
624 | use crate::topos::{LeanRef, Link, LinkSource, LinkType, ToposRef};
15+
| ^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^
16+
17+
warning: unused variable: `action_id`
18+
--> src/reasoning/store.rs:743:14
19+
|
20+
743 | let (action_id, outcome_id) = trace.log_action(&chosen, "Action", "Outcome");
21+
| ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_action_id`
22+
|
23+
= note: `#[warn(unused_variables)]` on by default
24+
25+
warning: unused variable: `questions`
26+
--> src/spec_agent/agent.rs:658:13
27+
|
28+
658 | let questions = agent.refine(&mut ctx, &[]).await.unwrap();
29+
| ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_questions`
30+
31+
warning: function `probability_with_edges` is never used
32+
--> src/epistemic/proptest.rs:27:8
33+
|
34+
27 | fn probability_with_edges() -> impl Strategy<Value = f64> {
35+
| ^^^^^^^^^^^^^^^^^^^^^^
36+
|
37+
= note: `#[warn(dead_code)]` on by default
38+
39+
warning: fields `code`, `language`, `max_issues`, `vulnerabilities`, `severity`, and `confidence` are never read
40+
--> src/signature/mod.rs:687:13
41+
|
42+
685 | struct AnalyzeCode {
43+
| ----------- fields in this struct
44+
686 | #[input(desc = "Source code to analyze")]
45+
687 | code: String,
46+
| ^^^^
47+
...
48+
690 | language: String,
49+
| ^^^^^^^^
50+
...
51+
693 | max_issues: Option<u32>,
52+
| ^^^^^^^^^^
53+
...
54+
696 | vulnerabilities: Vec<String>,
55+
| ^^^^^^^^^^^^^^^
56+
...
57+
699 | severity: String,
58+
| ^^^^^^^^
59+
...
60+
702 | confidence: f64,
61+
| ^^^^^^^^^^
62+
63+
warning: multiple fields are never read
64+
--> src/signature/mod.rs:796:13
65+
|
66+
794 | struct AllTypes {
67+
| -------- fields in this struct
68+
795 | #[input(desc = "A string")]
69+
796 | string_field: String,
70+
| ^^^^^^^^^^^^
71+
...
72+
799 | int_field: i32,
73+
| ^^^^^^^^^
74+
...
75+
802 | float_field: f64,
76+
| ^^^^^^^^^^^
77+
...
78+
805 | bool_field: bool,
79+
| ^^^^^^^^^^
80+
...
81+
808 | list_field: Vec<String>,
82+
| ^^^^^^^^^^
83+
...
84+
811 | optional_list_field: Option<Vec<i32>>,
85+
| ^^^^^^^^^^^^^^^^^^^
86+
...
87+
814 | array_field: [i32; 2],
88+
| ^^^^^^^^^^^
89+
...
90+
817 | output: String,
91+
| ^^^^^^
92+
93+
warning: fields `severity` and `category` are never read
94+
--> src/signature/mod.rs:838:13
95+
|
96+
835 | struct EnumAnnotated {
97+
| ------------- fields in this struct
98+
...
99+
838 | severity: String,
100+
| ^^^^^^^^
101+
...
102+
842 | category: String,
103+
| ^^^^^^^^
104+
105+
106+
running 657 tests
107+
....................................................................................... 87/657
108+
....................................................................................... 174/657
109+
............................................................iii........................ 261/657
110+
....................................................................................... 348/657
111+
....................................................................................... 435/657
112+
...........................i......iiiiii............................................... 522/657
113+
....................................................................................... 609/657
114+
................................................
115+
test result: ok. 647 passed; 0 failed; 10 ignored; 0 measured; 0 filtered out; finished in 0.59s
116+
117+
118+
running 40 tests
119+
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii....
120+
test result: ok. 4 passed; 0 failed; 36 ignored; 0 measured; 0 filtered out; finished in 1.33s
121+

0 commit comments

Comments
 (0)