Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
1c064bb
T095: AT-R1's HTTP half, an acceptance harness in its own CI job (pla…
brettheap Oct 2, 2026
bbdeb9e
T095 review round: no CLI value reaches a socket, a command or a path…
brettheap Oct 2, 2026
32ef3e8
T095 review round: a static import is judged even after a dynamic ref…
brettheap Oct 2, 2026
b4fc637
T095 review round 2: every PostgreSQL socket the kernel lists, a list…
brettheap Oct 2, 2026
b440d12
T095 review round 3: an error while preparing is a harness ERROR, exi…
brettheap Oct 2, 2026
f0e0ffe
T095 review round 4: the harness's decisions get collected, in-proces…
brettheap Oct 2, 2026
4dcb422
T095 review round 5: the catalog must be the envelope the chat rail a…
brettheap Oct 3, 2026
1c0ff97
Merge main 1130e996 into T095 (plan 034)
brettheap Oct 3, 2026
64dbb6d
T095: read the console token as T104 delivers it, from the opener fil…
brettheap Oct 3, 2026
a9a3180
Merge main 8e377823 into T095 (plan 034)
brettheap Oct 3, 2026
f29b4dd
T095: the catalog envelope admits every JSON number equal to 1 (plan …
brettheap Oct 3, 2026
3148a87
Merge T095's branch (f29b4ddd: main 8e377823 and the catalog-number f…
brettheap Oct 3, 2026
de8b227
T095: a served module must be JavaScript, and a linked sheet CSS (pla…
brettheap Oct 3, 2026
0f3b886
Merge main 90ac7033 into T095 (plan 034)
brettheap Oct 3, 2026
1769fbe
Merge T095's branch (0f3b8865: main 90ac7033 and the media-type check…
brettheap Oct 3, 2026
d53a737
T095: the opener's JSON record must describe its own forward (plan 034)
brettheap Oct 3, 2026
5636eb8
T095: the opener's forward is judged as a browser reads it, and never…
brettheap Oct 3, 2026
486e426
T095: the opener's refresh and token are read as the browser and the …
brettheap Oct 3, 2026
142d135
T095: the opener's forward must open the console page (plan 034)
brettheap Oct 3, 2026
2747949
T095: external dependencies, unserved hosts, encoded token copies and…
brettheap Oct 3, 2026
64dc06f
T095: a bare module specifier and a non-regular opener are named fail…
brettheap Oct 3, 2026
33841d4
Merge main 390e2c28 into T095 (plan 034)
brettheap Oct 3, 2026
4809b3d
T095: diagnostics never echo the entry point's output, and every docu…
brettheap Oct 3, 2026
32fbb6d
T095: only a live refresh forwards, the opener's whole tree is judged…
brettheap Oct 3, 2026
eb81b3d
T095: the raw /capabilities payload carries the console token neither…
brettheap Oct 3, 2026
ec95f45
Merge main 0116293a into T095 (plan 034)
brettheap Oct 3, 2026
4d0e6d1
T095: no line quotes a /capabilities payload, a nested payload is a n…
brettheap Oct 3, 2026
9b76ab3
Merge main c4b55cc4 into T095 (plan 034)
brettheap Oct 3, 2026
8286976
Merge main ca9e1bd5 into T095 (plan 034)
brettheap Oct 4, 2026
2dcb98d
T095: the opener is read whole or refused, no reason quotes the serve…
brettheap Oct 4, 2026
4bdb41f
T095: every parser reads as the browser reads, or refuses by name wha…
brettheap Oct 4, 2026
253dcfa
Merge main 38d3350e into T095 (plan 034)
brettheap Oct 4, 2026
ba216f8
T095: a page runs only its live module scripts, and every reference i…
brettheap Oct 4, 2026
9229c65
T095: JavaScript's own whitespace, no server value in a reason, and a…
brettheap Oct 4, 2026
3392f93
T095: a line comment ends at every JavaScript line terminator, and a …
brettheap Oct 4, 2026
0717f72
T095: a template's interpolation is code, and the page walked is the …
brettheap Oct 4, 2026
b7b9b84
T095: an interpolation starts an expression, an attribute's untermina…
brettheap Oct 4, 2026
d50e8ce
T095: a slash divides after an operand and opens a regular expression…
brettheap Oct 4, 2026
04579fc
T095: a slash right after a closing brace is refused by name (plan 034)
brettheap Oct 5, 2026
ff04e01
Merge main 32943cbf into T095 (plan 034)
brettheap Oct 5, 2026
1d58154
T095: a member named as a keyword is an operand (plan 034)
brettheap Oct 5, 2026
ea4f783
T095: what makes a dot a member's, and a name a whole name (plan 034)
brettheap Oct 5, 2026
bd50f40
T095: every keyword is read by where it stands (plan 034)
brettheap Oct 5, 2026
234229d
T095: only `for await (` opens a for head, never another `await (` (p…
brettheap Oct 5, 2026
09d9d63
T095: `of` is a keyword only as a for head's separator (plan 034)
brettheap Oct 5, 2026
e4f81d4
T095: a regular expression after a division, and after a line break t…
brettheap Oct 5, 2026
d698c6e
T095: every character of a name read as the name's, and the accepted …
brettheap Oct 5, 2026
d29e68c
Merge main dede32b4 into T095 (plan 034)
brettheap Oct 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions .github/workflows/validate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -345,3 +345,40 @@ jobs:
[ "$FAILURES" = "0" ] || { echo "::error::failures $FAILURES, clause (d) requires zero"; rc=1; }
[ "$ERRORS" = "0" ] || { echo "::error::errors $ERRORS, clause (d) requires zero"; rc=1; }
exit $rc

# ---------------------------------------------------------------------------
# AT-R1, THE HTTP HALF — plan 034 T095 (FR-011's HTTP half; openxFactory
# `specs/034-opendox-standalone-operation/spec.md` § "AT-R1"). Release 1's
# acceptance: on a clean machine with only openDox installed, a plain git
# repository opens, and the wheel, the radar lens and the chat pane are
# served, with chat's "no model configured" state.
#
# ITS OWN JOB, AND WITH NO DATABASE SERVICE, because the harness ASSERTS a
# clean machine: nothing answers on PostgreSQL's port or socket, and no DSN
# is set. The `validate` job's PostgreSQL service (T036) would break that
# precondition, so the two cannot share a job.
#
# NOT A PYTEST RUN. `acceptance/at_r1_http.py` sits outside `tests/` and
# `tests_runtime/`, so `testpaths` never collects it and #1144's F9.1 is
# unchanged. It installs `opendox[local]` into a fresh venv of its own,
# from this checkout and through the dependency lock, runs the documented
# `opendox generate-and-open --local …` over two plain repositories, checks
# what the server answers, stops it, and asserts that no bundled PostgreSQL
# process is left. It exits non-zero on the first failed assertion, naming
# it. So this job installs nothing itself, and the one `pip install` step
# in this file stays the `validate` job's.
#
# NOT A REQUIRED CHECK. Making it one is a ruleset change for the
# repository's owner (`docs/branch-protection.md`); this file cannot.
acceptance:
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v4

- uses: actions/setup-python@v5
with:
python-version: '3.12'

- name: AT-R1, the HTTP half
run: python3 acceptance/at_r1_http.py
Loading
Loading