Skip to content

Commit 85a7124

Browse files
docs(status): add operational collapse status viewer (#5)
1 parent cda74ab commit 85a7124

3 files changed

Lines changed: 424 additions & 0 deletions

File tree

Lines changed: 174 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,174 @@
1+
<!doctype html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="utf-8" />
5+
<meta name="viewport" content="width=device-width,initial-scale=1" />
6+
<title>Operational-Wavefunction-Collapse — Repository Status Viewer</title>
7+
<meta name="description" content="Repository-local status viewer for Operational-Wavefunction-Collapse. Separates operational-collapse artifact closure from open theorem-level, experimental, and interpretation-level claims." />
8+
<style>
9+
:root{
10+
--bg:#0b0d12;--fg:#e6e8ee;--muted:#9aa3b2;--card:#11141b;--border:#222836;
11+
--closed:#1f9d55;--closed-bg:#0f1f17;--closed-border:#1f9d5544;
12+
--open:#d9534f;--open-bg:#1f1313;--open-border:#d9534f44;
13+
--cond:#c98a14;--cond-bg:#1f1a0f;--cond-border:#c98a1444;
14+
--warn-bg:#1f1a0f;--warn-border:#c98a1466;--mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
15+
}
16+
*{box-sizing:border-box}
17+
html,body{margin:0;background:var(--bg);color:var(--fg);font:14px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
18+
header{border-bottom:1px solid var(--border);background:var(--card)}
19+
.wrap,main{max-width:1080px;margin:0 auto}
20+
.wrap{padding:20px 18px}
21+
main{display:grid;gap:18px;padding:22px 18px}
22+
.eyebrow{font-family:var(--mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
23+
h1{font-size:22px;margin:.4rem 0 .2rem}
24+
h2{font-size:18px;margin:0 0 .3rem}
25+
p{margin:0;color:var(--muted)}
26+
.banner{border-bottom:1px solid var(--warn-border);background:var(--warn-bg);color:#f4d58a}
27+
.banner .wrap{display:flex;gap:10px;align-items:flex-start;padding:12px 18px}
28+
.banner strong{color:#fff}
29+
.card{border:1px solid var(--border);background:var(--card);border-radius:10px;padding:18px}
30+
.grid2{display:grid;gap:18px}
31+
@media(min-width:880px){.grid2{grid-template-columns:1fr 1fr}}
32+
.flags,.meta,.checks{display:grid;gap:8px;grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}
33+
.box{display:flex;justify-content:space-between;gap:12px;border:1px solid var(--border);border-radius:6px;padding:8px 12px;font-family:var(--mono);font-size:12px}
34+
.box.closed{background:var(--closed-bg);border-color:var(--closed-border)}
35+
.box.open{background:var(--open-bg);border-color:var(--open-border)}
36+
.box .k{color:var(--muted)}.box .v{font-weight:700}.box .v.t{color:var(--closed)}.box .v.f{color:var(--open)}
37+
ul.surf{list-style:none;padding:0;margin:10px 0 0;display:grid;gap:8px}
38+
ul.surf li{border:1px solid var(--border);border-radius:8px;padding:10px 12px}
39+
ul.surf.closed li{background:var(--closed-bg);border-color:var(--closed-border)}
40+
ul.surf.open li{background:var(--open-bg);border-color:var(--open-border)}
41+
ul.surf.cond li{background:var(--cond-bg);border-color:var(--cond-border)}
42+
.tag{font-family:var(--mono);font-size:10px;font-weight:800;letter-spacing:.12em;padding:2px 6px;border-radius:3px;color:#fff}
43+
.tag.closed{background:var(--closed)}.tag.open{background:var(--open)}.tag.cond{background:var(--cond)}
44+
.label{font-family:var(--mono);font-size:13px;font-weight:650}
45+
.detail{color:var(--muted);font-size:12px;margin-top:2px}
46+
.flow{font-family:var(--mono);border:1px solid var(--border);border-radius:8px;padding:14px;color:var(--muted)}
47+
footer{padding:18px;text-align:center;color:var(--muted);font-family:var(--mono);font-size:11px}
48+
</style>
49+
</head>
50+
<body>
51+
<header>
52+
<div class="wrap">
53+
<div class="eyebrow">repository status viewer</div>
54+
<h1>Operational-Wavefunction-Collapse — Repository Status Viewer</h1>
55+
<p>Status: <strong>operational-collapse artifact</strong></p>
56+
</div>
57+
</header>
58+
59+
<div class="banner" role="note" aria-label="claim boundary">
60+
<div class="wrap">
61+
<span aria-hidden="true"></span>
62+
<p>
63+
This repository records a finite <strong>operational-collapse artifact</strong>.
64+
It does <strong>not</strong> prove the measurement problem is solved, does not prove
65+
universal wavefunction collapse, does not claim experimental confirmation, does not
66+
replace quantum mechanics, does not certify a physical device, and does not claim
67+
theorem-complete quantum-foundations closure. All claims below are repository-local
68+
unless explicitly marked open or conditional.
69+
</p>
70+
</div>
71+
</div>
72+
73+
<main>
74+
<section class="card">
75+
<div class="eyebrow">01 / claim flags</div>
76+
<h2>Claim flags</h2>
77+
<div class="flags" style="margin-top:10px">
78+
<div class="box open"><span class="k">theorem_complete</span><span class="v f">false</span></div>
79+
<div class="box open"><span class="k">measurement_problem_solved_claimed</span><span class="v f">false</span></div>
80+
<div class="box open"><span class="k">universal_collapse_claimed</span><span class="v f">false</span></div>
81+
<div class="box open"><span class="k">experimental_confirmation_claimed</span><span class="v f">false</span></div>
82+
<div class="box open"><span class="k">device_certification_claimed</span><span class="v f">false</span></div>
83+
<div class="box open"><span class="k">replacement_of_quantum_mechanics_claimed</span><span class="v f">false</span></div>
84+
<div class="box closed"><span class="k">repository_local_artifact</span><span class="v t">true</span></div>
85+
</div>
86+
</section>
87+
88+
<section class="card">
89+
<div class="eyebrow">02 / artifact metadata</div>
90+
<h2>Artifact metadata</h2>
91+
<div class="meta" style="margin-top:10px">
92+
<div class="box"><span class="k">artifact_type</span><span class="v">operational-collapse artifact</span></div>
93+
<div class="box"><span class="k">repository_scope</span><span class="v">status-classification layer</span></div>
94+
<div class="box"><span class="k">viewer_type</span><span class="v">dependency-free static HTML</span></div>
95+
<div class="box"><span class="k">verifier_type</span><span class="v">Python stdlib</span></div>
96+
<div class="box"><span class="k">frontend_dependencies</span><span class="v">none</span></div>
97+
</div>
98+
</section>
99+
100+
<section class="card">
101+
<div class="eyebrow">03 / verifier &amp; CI surfaces</div>
102+
<h2>Repository-local checks</h2>
103+
<div class="checks" style="margin-top:10px">
104+
<div class="box closed"><span class="k">status page verifier</span><span class="v t">PASS target</span></div>
105+
<div class="box closed"><span class="k">pytest guard</span><span class="v t">present</span></div>
106+
<div class="box closed"><span class="k">claim boundary</span><span class="v t">visible</span></div>
107+
<div class="box closed"><span class="k">surface separation</span><span class="v t">closed/open/conditional</span></div>
108+
</div>
109+
</section>
110+
111+
<div class="grid2">
112+
<section class="card">
113+
<div class="eyebrow">04 / closed surfaces</div>
114+
<h2>Repository-local</h2>
115+
<p>Verified or represented inside this repository as finite artifact infrastructure.</p>
116+
<ul class="surf closed">
117+
<li><div><span class="label">operational-collapse status surface</span> <span class="tag closed">CLOSED</span></div><div class="detail">Repository-local finite status surface is represented.</div></li>
118+
<li><div><span class="label">claim-boundary dashboard</span> <span class="tag closed">CLOSED</span></div><div class="detail">Dashboard separates repository-local claims from open theorem-level or experimental claims.</div></li>
119+
<li><div><span class="label">static viewer surface</span> <span class="tag closed">CLOSED</span></div><div class="detail">Dependency-free HTML status page.</div></li>
120+
<li><div><span class="label">Python verifier surface</span> <span class="tag closed">CLOSED</span></div><div class="detail">Checks non-claims, forbidden positive claims, and visual separation markers.</div></li>
121+
<li><div><span class="label">pytest guard surface</span> <span class="tag closed">CLOSED</span></div><div class="detail">Exercises passing and failing verifier cases.</div></li>
122+
</ul>
123+
</section>
124+
125+
<section class="card">
126+
<div class="eyebrow">05 / open surfaces</div>
127+
<h2>Theorem-level and experimental claims</h2>
128+
<p>Outside repository scope. Not claimed, not proved, not certified.</p>
129+
<ul class="surf open">
130+
<li><div><span class="label">measurement problem solved</span> <span class="tag open">OPEN</span></div><div class="detail">Not claimed. External foundations-level problem.</div></li>
131+
<li><div><span class="label">universal wavefunction collapse theorem</span> <span class="tag open">OPEN</span></div><div class="detail">Not claimed. External mathematics and physics.</div></li>
132+
<li><div><span class="label">experimental confirmation</span> <span class="tag open">OPEN</span></div><div class="detail">Not claimed. Requires external experimental evidence.</div></li>
133+
<li><div><span class="label">replacement of quantum mechanics</span> <span class="tag open">OPEN</span></div><div class="detail">Not claimed. Outside repository scope.</div></li>
134+
<li><div><span class="label">physical-device certification</span> <span class="tag open">OPEN</span></div><div class="detail">Not claimed. Requires external certification authority.</div></li>
135+
<li><div><span class="label">theorem-complete quantum-foundations closure</span> <span class="tag open">OPEN</span></div><div class="detail">Not claimed. External mathematics and physics.</div></li>
136+
</ul>
137+
</section>
138+
</div>
139+
140+
<section class="card">
141+
<div class="eyebrow">06 / conditional surfaces</div>
142+
<h2>Conditional surfaces</h2>
143+
<p>Hypothesis-gated statements only. No unconditional theorem-level upgrade.</p>
144+
<ul class="surf cond">
145+
<li><div><span class="label">operational-collapse interpretation under assumptions</span> <span class="tag cond">CONDITIONAL</span></div><div class="detail">Depends on the stated information-flow and operational assumptions.</div></li>
146+
<li><div><span class="label">physical interpretation</span> <span class="tag cond">CONDITIONAL</span></div><div class="detail">Requires separate modeling assumptions and experimental connection.</div></li>
147+
<li><div><span class="label">foundations-level generalization</span> <span class="tag cond">CONDITIONAL</span></div><div class="detail">Requires external mathematical and interpretive closure.</div></li>
148+
</ul>
149+
</section>
150+
151+
<section class="card">
152+
<div class="eyebrow">07 / certification map</div>
153+
<h2>Repository-local flow</h2>
154+
<div class="flow">
155+
operational surface → status classification → claim-boundary dashboard → verifier guard → repository-local operational-collapse artifact
156+
</div>
157+
</section>
158+
159+
<section class="card">
160+
<div class="eyebrow">08 / status interpretation</div>
161+
<h2>Status interpretation</h2>
162+
<p>
163+
The verified endpoint is a repository-local operational-collapse artifact.
164+
The remaining work is external mathematics, external physics, experimental confirmation,
165+
or interpretive foundations work. This dashboard must not upgrade repository-local
166+
verification into measurement-problem closure, universal collapse, device certification,
167+
or replacement-of-quantum-mechanics claims.
168+
</p>
169+
</section>
170+
</main>
171+
172+
<footer>repository-local artifact-status viewer / no frontend dependencies</footer>
173+
</body>
174+
</html>
Lines changed: 179 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,179 @@
1+
#!/usr/bin/env python3
2+
from __future__ import annotations
3+
4+
import html as _html
5+
import re
6+
import sys
7+
from dataclasses import dataclass, field
8+
from pathlib import Path
9+
from typing import Iterable
10+
11+
REPO_NAME = "Operational-Wavefunction-Collapse"
12+
ARTIFACT_TYPE = "operational-collapse artifact"
13+
STATUS_PAGE = Path("docs/status/OPERATIONAL_COLLAPSE_STATUS_VIEWER.html")
14+
15+
REQUIRED_TEXT = (
16+
REPO_NAME.lower(),
17+
ARTIFACT_TYPE,
18+
"does not prove the measurement problem is solved",
19+
"does not prove universal wavefunction collapse",
20+
"does not claim experimental confirmation",
21+
"does not replace quantum mechanics",
22+
"does not certify a physical device",
23+
"theorem-complete quantum-foundations closure",
24+
"claim flags",
25+
"artifact metadata",
26+
"closed surfaces",
27+
"open surfaces",
28+
"conditional surfaces",
29+
"certification map",
30+
"status interpretation",
31+
)
32+
33+
REQUIRED_CSS = (
34+
"surf closed",
35+
"surf open",
36+
"surf cond",
37+
"tag closed",
38+
"tag open",
39+
"tag cond",
40+
)
41+
42+
FORBIDDEN_POSITIVE = (
43+
"solves the measurement problem",
44+
"proves the measurement problem is solved",
45+
"proves universal wavefunction collapse",
46+
"proves wavefunction collapse",
47+
"experimentally confirms collapse",
48+
"experimental confirmation is complete",
49+
"replaces quantum mechanics",
50+
"certifies a physical device",
51+
"device certification is complete",
52+
"theorem-complete proof",
53+
"theorem-complete quantum-foundations closure is complete",
54+
)
55+
56+
SAFE_NEGATION_PATTERNS = (
57+
"does not prove",
58+
"does not claim",
59+
"does not replace",
60+
"does not certify",
61+
"not claimed",
62+
"not proved",
63+
"not certified",
64+
"no ",
65+
)
66+
67+
68+
@dataclass
69+
class Report:
70+
ok: bool = True
71+
failures: list[str] = field(default_factory=list)
72+
notes: list[str] = field(default_factory=list)
73+
74+
def fail(self, msg: str) -> None:
75+
self.ok = False
76+
self.failures.append(msg)
77+
78+
def note(self, msg: str) -> None:
79+
self.notes.append(msg)
80+
81+
82+
_TAG_RE = re.compile(r"<[^>]+>")
83+
_WS_RE = re.compile(r"\s+")
84+
_SENTENCE_RE = re.compile(r"[^.!?\n]+[.!?\n]?")
85+
86+
87+
def strip_html(raw: str) -> str:
88+
raw = re.sub(r"<script\b[^>]*>.*?</script>", " ", raw, flags=re.I | re.S)
89+
raw = re.sub(r"<style\b[^>]*>.*?</style>", " ", raw, flags=re.I | re.S)
90+
text = _TAG_RE.sub(" ", raw)
91+
text = _html.unescape(text)
92+
return _WS_RE.sub(" ", text).strip()
93+
94+
95+
def sentences(text: str) -> list[str]:
96+
return [s.strip() for s in _SENTENCE_RE.findall(text) if s.strip()]
97+
98+
99+
def is_safe_for_phrase(sentence: str, phrase: str) -> bool:
100+
lower = sentence.lower()
101+
102+
# Only this noun-phrase form is allowed when explicitly negated.
103+
if phrase == "theorem-complete proof":
104+
return "no theorem-complete proof" in lower or "not a theorem-complete proof" in lower
105+
106+
# Verb-form, experimental-complete, replacement, and certification-complete
107+
# claims are never allowed as source text, even near generic boundary language.
108+
return False
109+
110+
111+
def check_forbidden_claims(visible: str, report: Report) -> None:
112+
lower = visible.lower()
113+
for phrase in FORBIDDEN_POSITIVE:
114+
start = 0
115+
while True:
116+
idx = lower.find(phrase, start)
117+
if idx < 0:
118+
break
119+
sentence = visible[max(0, idx - 120): idx + len(phrase) + 120]
120+
if not is_safe_for_phrase(sentence, phrase):
121+
report.fail(
122+
"forbidden positive claim outside negation: "
123+
f"{phrase!r} near: {sentence[:240]!r}"
124+
)
125+
start = idx + len(phrase)
126+
127+
128+
def run(path: Path = STATUS_PAGE) -> Report:
129+
report = Report()
130+
131+
if not path.exists():
132+
report.fail(f"missing status page: {path}")
133+
return report
134+
135+
raw = path.read_text(encoding="utf-8")
136+
raw_lower = raw.lower()
137+
138+
if len(raw.strip()) < 500 or "<html" not in raw_lower:
139+
report.fail("status page is not nontrivial HTML")
140+
return report
141+
142+
report.note(f"status page found ({len(raw)} bytes)")
143+
144+
visible = strip_html(raw)
145+
lower = visible.lower()
146+
147+
for item in REQUIRED_TEXT:
148+
if item.lower() not in lower:
149+
report.fail(f"required text missing: {item}")
150+
151+
for item in REQUIRED_CSS:
152+
if item not in raw_lower:
153+
report.fail(f"required CSS marker missing: {item}")
154+
155+
check_forbidden_claims(visible, report)
156+
return report
157+
158+
159+
def format_report(report: Report) -> str:
160+
lines = ["Operational-Wavefunction-Collapse :: status-viewer verifier", "=" * 64]
161+
lines.extend(f" · {note}" for note in report.notes)
162+
if report.ok:
163+
lines.append("RESULT: PASS")
164+
else:
165+
lines.append("RESULT: FAIL")
166+
lines.extend(f" ✗ {failure}" for failure in report.failures)
167+
return "\n".join(lines)
168+
169+
170+
def main(argv: Iterable[str]) -> int:
171+
args = list(argv)
172+
path = Path(args[0]) if args else STATUS_PAGE
173+
report = run(path)
174+
print(format_report(report))
175+
return 0 if report.ok else 1
176+
177+
178+
if __name__ == "__main__":
179+
raise SystemExit(main(sys.argv[1:]))

0 commit comments

Comments
 (0)