Commit graph

7 commits

Author SHA1 Message Date
24768ef66b build(m1): pin toolchain and guard v1.3.0 in pyproject
Plan Step 2. Verify green: `bash scripts/bootstrap.sh && .venv/bin/python -m
pytest tests/test_toolchain.py` -> 3 passed, exit 0.

Test first, and the RED was demonstrated rather than assumed: run against a
venv carrying pytest and the guard but not pytest-socket, the third test fails
with ModuleNotFoundError while the other two pass. The test discriminates.

pyproject.toml declares the dependencies as a PEP 735 group rather than an
installable distribution -- nothing here needs a build backend, since the tests
import from scripts/ via pytest's pythonpath. Measured before choosing it: pip
26.2.1 on this machine supports `install --group`, and bootstrap upgrades pip
first, so a pip too old fails loudly instead of silently skipping the guard.

The guard is pinned to the exact tag v1.3.0 and is not vendored. Verified the
tag resolves and the package exposes __version__ == "1.3.0"; that equality is
what the test asserts, not the pip metadata.

addopts carries --disable-socket and --strict-markers, which is why the
`network` marker is declared: with strict markers an undeclared marker would
make `-m 'not network'` an error rather than a filter, and the offline
guarantee would quietly stop being tested.

bootstrap.sh builds under ${CLAUDE_PLUGIN_DATA} when set (survives a plugin
update) and falls back to the repo-root .venv for development -- risk H2. It
refuses an interpreter below 3.10 instead of building on it, because python3
here can resolve to 3.9.6 under a GUI-spawned process.

Exercised, not just written: re-running is idempotent (exit 0); --med-xlsx
installs the extra (openpyxl 3.1.5 importable); an unknown argument exits 2
with usage; a missing JOBBSOK_PYTHON interpreter refuses loudly. bash 3.2-clean
(system /bin/bash 3.2.57 -n passes) and ASCII-only.

.gitignore needed no change: `.venv/` was already on line 12 from the initial
commit, and `git check-ignore -v .venv` confirms it matches.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-04 17:26:20 +02:00
0f92b2a1c3 docs(m1): record Cowork probe results and degradation branch
Plan Step 1. Builds the probe vehicle and the checklist; does NOT answer it.

The four questions all require the operator in a live Cowork session on this
Mac, and that is a fact about the measurement rather than a caveat: measured
2026-09-04, the session mode is not readable from disk (cowork_settings.json
carries only extraKnownMarketplaces; the desktop config carries
coworkNetworkMode and a trusted-folder list, neither states where a session
runs), and the other three each need a plugin installed in a live session.

The step's Verify is therefore RED on purpose and stays red until the operator
answers:
  test "$(grep -cE '...' docs/cowork-probe.md)" = 4   -> exit 1 (0 of 4 matched)
Validated in both directions: a fully answered copy exits 0, a copy with three
of four answered exits 1. The gate can pass, so its failure means something.

Probe vehicle: jobbsok-probe, exactly four files under
tests/fixtures/cowork-probe/ -- manifest, skills/probe-versjon/SKILL.md,
.mcp.json declaring the stdio server probe-tools, and probe_tools.py (standard
library only). Smoke-tested from Claude Code: initialize handshake completes,
tools/list returns probe_ping, tools/call returns an interpreter version, an
unknown tool name is rejected. What is NOT verified is whether Cowork ever
starts it -- that is the question.

Archive is built from an explicit four-file include list, never zip -r over the
repo root; verified to contain no .git, STATE.md, .venv or .claude/ entry.

The degradation branch for each possible nei is written down now, before any
answer is known, so it is not decided under pressure later.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-04 17:22:59 +02:00
2f99ac5951 test(plan-gates): gate-scriptene fra revisjonen 04.09, kjoerbare fra repoet
De to maskinelle sjekkene paa at planrevisjonen holder laa i en scratchpad og
var i ferd med aa bli borte (samme naeromkomst som oekt 2s script). Flyttet inn
i repoet, gjort sted-uavhengige (repo-roten resolveres fra $0) og med en guard
naar plan.md/brief.md mangler -- de er local-only paa denne offentlige remoten,
og «fant ingenting» skal ikke lese som «alt groent» (exit 2, ikke 0).

Kjoert fra tests/plan-gates/ etter flyttingen:
  brief_criteria.sh  PASS=33 FAIL=0
  stale_text.sh      PASS=12 FAIL=0

Negativkontroll: mot en tom plan gir brief_criteria.sh PASS=6 FAIL=27 og exit 1,
og manglende fil gir SKIP + exit 2. Gaten kan altsaa feile.

PM-autorisert forsteg (amendment til ordre 20260904T150903Z), utenfor planens
sesjon-1-gjerde.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-04 17:18:06 +02:00
2076f617e0 docs(plan): revisjon etter kvalitetsrevisjonen 04.09
Operatoerbeslutning (b): revider planen foer M1. Ordre
20260904T135502Z-687411640-from-.claude, ti punkter, alle utfoert i
plan.md og brief.md under .claude/projects/ (local-only, gitignored) --
denne seksjonen i revisjonsrapporten er den sporede baereren.

Gater ved levering, kjoert 2026-09-04:
- plan-validator.mjs --strict: valid, 56 steg, 0 errors/warnings
- brief-validator.mjs: valid, 0 errors/warnings
- oekt 2s gate-script (33 grep-kriterier): PASS=33 FAIL=0
- grep -c 'Pass 2' plan.md: 6
- de tolv "Foreldet tekst"-greppene: PASS=12 FAIL=0

Ingen kode skrevet, ingen M1-steg utfoert. 56 steg inn, 56 steg ut.

Tre avvik fra ordreteksten, begrunnet i rapporten: --check i 5 av 6
Cowork-steg (steg 16 er M1, sak_status.py finnes foerst i steg 17);
det tolvte scriptet i avviksnoten er jobbsok_tools.py, ikke
kandidat_schema.py (som allerede sto der); Pass 2-seksjonen staar sist
i fila, der trekplan.md anviser, med peker fra planhodet.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-04 17:07:11 +02:00
775e291642 docs: kvalitetsrevisjon av planleggingen (maal, ikke bygg)
Measures the two planning sessions and plan.md against docs/build-brief.md:
step traceability (0 of 56 unanchored, 15 derived), blocker closure (5 of 9
closed in step text, 4 partial), review-count discrepancies, dedup false
negative reproduced (Jaccard 0.236/0.404 vs 0.7), session token and cost
profile, and whether /trekplan --brief docs/build-brief.md is a valid input
(it is not: FM_MISSING). Recommendation: revise the listed steps first, then
M1 GO. No change to plan.md.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 08:06:55 +02:00
91b078f694 chore: gitignore .claude/projects (local-only on public remote); brief validated
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 21:17:47 +02:00
05a7aa1d6f feat: initial commit — plugin manifest and build brief
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 20:27:23 +02:00