Commit Graph

1111 Commits

Author SHA1 Message Date
7515bd0dc2 Add CI, install.sh and the run.sh harness
Two workflows, one per gate, each checking out kuhyx/utils into .utils and
calling the shared script -- the pattern every other repo here uses.
pre-commit.yml sets UTILS_ROOT to that checkout, without which the shims fail
with "shared gate not found", and both use fetch-depth 1 because the history
is ~494 MB and no gate reads it.

install.sh ends by verifying and exits non-zero if the gate cannot run; a
warning there would just recreate the bug it exists to prevent, since this
repo had no hooks at all until now. Confirmed both ways: --check exited 1
while the hooks were missing, then 0 once installed.

run.sh separates `status` (probe, seconds, safe in CI) from `run <dir>`
(actually executes one project). Conflating them is not hypothetical -- the
first version of the probe did exactly that and it cost 120 seconds and a
scare. Some course dirs already ship a run.sh from years ago, and
Programming/PSD/run.sh installs packages with sudo and starts Kafka; calling
it with an unknown --probe flag does not probe anything, it runs the project.
It blocked on a sudo prompt rather than installing (verified against
/var/log/pacman.log and the absence of a yay clone), but only by luck.

So probe_one now invokes a runner ONLY if it declares --probe, wraps it in
`timeout 20s` as defence in depth, and reports anything else as unprobed
without touching it. All 44 directories now probe instantly.

DOCS-runnability.md is generated with a per-environment column. Recording one
global status would make the CI check red by construction, since `runnable`
locally and `blocked` on ubuntu-latest is the normal case for the MATLAB,
Unity and .NET directories rather than a drift signal.

Per-directory run.sh files are the next step; all 44 currently read unprobed.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0172dj34FDpao6wsix8ZuCzE
2026-08-28 18:26:10 +02:00
50263f075a Add pre-commit and fix everything it found
`pre-commit run --all-files` is green. The config only carries hooks whose
subject is already clean, so it stays green at every commit -- file-length,
ruff/mypy and dependency-freshness are listed as blocked, each on its own
cleanup, and the file-REWRITING hooks (trailing-whitespace, end-of-file-fixer)
are held back for their own reviewed commit.

Turning it on found four real things:

1. A committed private key: ERSMS-project/nginx/ssl/nginx.key. It is a
   self-signed CN=localhost cert that had already expired (notAfter
   2025-06-16), so the risk is nil -- but it is regenerable in one openssl
   call, so it is replaced by generate-cert.sh rather than excluded from the
   hook. The script says plainly that removing it from HEAD does NOT
   unpublish it: history is deliberately not rewritten, which is acceptable
   only because nothing ever trusted this key.

2. Four files with unresolved merge conflict markers committed, left over
   from the subtree merges. EARIN/.gitignore and .vscode/extensions.json are
   resolved as the union of both sides. The two Unity folder .meta files each
   had two candidate GUIDs; grepping showed neither is referenced anywhere
   (folder GUIDs rarely are), so either is safe and the HEAD side is kept --
   an arbitrary choice, but a checked one rather than a guess.

3. 62 shellcheck findings across 11 scripts, all fixed, no disables added.
   The interesting pattern was `cd X; cmd &; PID=$!; cd ..`, which trips both
   SC2164 and SC2103 and cannot use a plain subshell without losing the PID.
   `( cd X && exec cmd ) &` keeps the directory, the PID and the semantics.
   EOPSY lab1's submitted solution was verified by RUNNING it afterwards:
   a->A, B->b, foldera->FOLDERA, FOLDERB->folderb, exactly as before.

4. check-json failing on 11 files, which was the wrong parser rather than a
   defect -- tsconfig*.json and .vscode/*.json are JSONC, where TypeScript
   and VS Code both allow comments. Those two path classes are excluded and
   every other .json is still checked. Excluding them is what surfaced the
   merge conflict in (2) as the one genuine failure.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0172dj34FDpao6wsix8ZuCzE
2026-08-28 18:21:22 +02:00
54337a662e Organise markdown into the four namespaces and add CLAUDE.md
Five files were outside README / CLAUDE* / DOCS* / TODO*, and two were over
the 250-line cap. Both gates now pass repo-wide.

Renames: the two lowercase readme.md files, and three documents into DOCS-*.
The AIS requirements doc split at its own boundary into functional (101) and
non-functional (174). The WDWR report split into six numbered sections behind
an index that keeps the original filename, 38-235 lines each; 753 lines of
body plus the 18-line header account for all 771 original lines, so nothing
was dropped.

That WDWR file needed checking before splitting: it sits next to main.tex and
main.pdf and looked like a conversion of them. It is not -- main.tex is
project 25406 and the markdown is project 18402, a different document. So it
is authored content and the split is real work, not churn on a build artifact.

Filled the three empty READMEs and replaced ECOTE's, which was a stale copy of
the root README still claiming the group projects were excluded -- they were
merged in by subtree some time ago.

EOPSY/lab1 turned out not to be the code-free directory the survey suggested:
it has modify.sh and modify_examples.sh. The oddly-named empty files beside
them are the exercise's OUTPUT, committed so the before/after state is
visible, and its README now says so rather than leaving them looking like junk.

CLAUDE.md follows the testsAndMisc structure. Writing it caught a nice one:
the md-naming marker is a biconditional, so quoting the literal removal string
in a non-TODO file fails the gate. The gate was right; the text is rephrased.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0172dj34FDpao6wsix8ZuCzE
2026-08-28 17:41:11 +02:00
94f965fe3a Add the no-binaries gate with a path-scoped allowlist
621 binaries are tracked here and they are supposed to be: 155 PDFs, 275
PNGs, 68 JPGs, the submitted reports and figures. Decision 3 keeps them and
skips the history rewrite, so a blanket block would be wrong. What the gate
is for is stopping NEW junk.

So the allowlist is scoped by path rather than by extension alone. Documents,
figures and datasets are allowed under Programming/ and NotProgramming/;
compiled output (.o .so .a .exe .dll .dylib .class .pyc) is allowed nowhere
and has no entry at all; and the repo root, gates/, scripts/ and .github/
have no entry either, so a binary dropped in the tooling directories is
blocked. The .tgz entries are load-bearing -- EOPSY ships its simulators as
ftp/{sched,memory}.tgz and `make setup` extracts them.

Verified three ways, because a gate that passes everything is vacuous:
  - all 2749 tracked files          -> exit 0
  - probe.exe at root, probe.png in gates/ -> BLOCKED, exit 1
  - a real submitted PDF            -> exit 0
plus shellcheck clean.

The script is a copy of testsAndMisc's, which is where this gate lives today
-- it is not in the shared ~/utils set. The header says so and says to move
it to ~/utils rather than let the two drift, since a hand-copied gate is what
produced four forks of the 250-line cap.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0172dj34FDpao6wsix8ZuCzE
2026-08-28 17:37:53 +02:00
d407527863 Untrack 189 regenerable artifacts and close the silent-ignore trap
Untracked (--cached, so they stay on disk): 76 LaTeX artifacts, 7 .xdv XeTeX
intermediates, 18 -eps-converted-to.pdf from epstopdf, 32 files of .NET
obj/Debug/net6.0 output including three copies of lab2.dll, 16 .class/.o, the
9 MB Nx cache with its native .node, and an entire committed Python
virtualenv at ECOTE/program/ecote (python 3.10.10, 18 files).

The existing 407-line LaTeX .gitignore was NOT unused as I first assumed --
it already covered *.aux and *.class, and the artifacts simply predate it. So
this appends the categories it missed (*.o, obj/, .venv/, .nx/, target/)
rather than rewriting something that was working.

The second half is the more interesting bug. Auditing with

    git ls-files | git check-ignore --stdin --no-index

found 130 files that were tracked AND ignored. That combination fails
silently: `git add` on such a file is not an error, the edit just never
lands. Causes were dist/ swallowing the vendored jQuery/Bootstrap bundle,
.vscode/ and .idea/, and -- the good one -- the LaTeX template's man-page
patterns *.[1-9] and *.[1-9][0-9] matching EPFU's date-named report
directories, so doc/21.11/ read as a man page section and took report.pdf
and seven screenshots with it.

32 of those 130 turned out to be more build output and were untracked too;
the rest got targeted ! overrides. The first attempt used a blanket
!NotProgramming/EMISY/** which re-enabled that course's own LaTeX artifacts,
so it is narrowed to the *.1 schematic exports that actually needed it.
TRAK's nested .gitignore excluded the .vscode DIRECTORY, which stops git
descending, so no root-level ! can reach inside -- that one had to be fixed
at its source.

Both invariants now verified: 0 tracked files ignored, and 0 of the 189
untracked artifacts leaked back into view.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0172dj34FDpao6wsix8ZuCzE
2026-08-28 17:35:38 +02:00
fd81d75424 Declare vendored subtrees and park the data-txt cap decision
First step of bringing this archive up to the fleet standard: nothing can be
linted until the gates know what is not kuhy's code.

gates/vendored.txt is the source of truth, one path per line with the reason
AND how it was verified, because an unverified entry is a suppression wearing
a costume. Seven subtrees: the ASP.NET scaffolder's jQuery/Bootstrap bundle
(~98% of all JS and CSS here), stock Unity package and template assets,
manufacturer-supplied Altium/PADS component libraries for the OLED and
HMC5883L parts, and the two EOPSY simulator trees.

The EOPSY entries were the one judgement call, and they turned out not to be:
work/ is the extraction target of `make setup`, and extracting the committed
ftp/*.tgz and diffing shows 14/14 java files byte-identical to the department
originals. ControlPanel.java (1852 lines) and Kernel.java (511) are therefore
not student work and are not split.

Deliberately NOT vendored: EMISY's README, declaration and report are kuhy's
own writing; E-PSYOPS Assets/Scripts (12 .cs) is authored; and the Unity Input
System binding is already exempt via its auto-generated banner, so it needs no
entry. Narrow entries beat one blanket directory.

TODO-file-length-250.md parks the one thing this mechanism cannot express: 27
data .txt files whose lines are long enough that the cap reads them as prose.
They resist directory-prefix exemption because the SemEval corpus dirs mix the
official distribution with kuhy's own GPT outputs, and WDWR/projekt/R holds
both scenarios.txt and the authored model.R. That blocks only the installation
of the file-length gate, which is several milestones away.

Mirrored into the shared gate as kuhyx/utils@a4a3e0a.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0172dj34FDpao6wsix8ZuCzE
2026-08-28 17:31:30 +02:00
kuhyx
2d85cbbd74
Revise README to reflect group project inclusion
Updated README to include group projects and contributors.
2026-02-06 22:23:55 +01:00
053f56439f Restore original local content into merged PSD, TRAK, STUP directories 2026-02-06 22:15:53 +01:00
ece68bad7b Add 'NotProgramming/STUP/' from commit '98b45ae01af10b8db6aaea6fb3b0c24d024d3e57'
git-subtree-dir: NotProgramming/STUP
git-subtree-mainline: 056d3aeab6
git-subtree-split: 98b45ae01a
2026-02-06 22:15:41 +01:00
056d3aeab6 Add 'Programming/TRAK/' from commit '777937fb9ee618a73e357f5b25abe00744a4ab99'
git-subtree-dir: Programming/TRAK
git-subtree-mainline: e11d703c3e
git-subtree-split: 777937fb9e
2026-02-06 22:15:36 +01:00
e11d703c3e Add 'Programming/PSD/' from commit 'cc1989eb7b6e039cafe95d2bef697ace67cbc1d2'
git-subtree-dir: Programming/PSD
git-subtree-mainline: 781bfce7b1
git-subtree-split: cc1989eb7b
2026-02-06 22:15:31 +01:00
781bfce7b1 Add 'Programming/ECRYPT_PROJECT/' from commit '0191d102d1acfbd8a764b53efe3da5730bef383b'
git-subtree-dir: Programming/ECRYPT_PROJECT
git-subtree-mainline: be962d0c35
git-subtree-split: 0191d102d1
2026-02-06 22:15:28 +01:00
be962d0c35 Add 'Programming/EARIN/' from commit 'a09c96dd651633b20dc0703840308e2e0d8376df'
git-subtree-dir: Programming/EARIN
git-subtree-mainline: 635e287095
git-subtree-split: a09c96dd65
2026-02-06 22:15:23 +01:00
635e287095 Add 'NotProgramming/EDABA-LAB/' from commit 'cc8d63c7344b827d9c12d71ece2c61f5921683fa'
git-subtree-dir: NotProgramming/EDABA-LAB
git-subtree-mainline: b88865222b
git-subtree-split: cc8d63c734
2026-02-06 22:15:19 +01:00
b88865222b Add 'Programming/E-PSYOPS/' from commit 'de582f1b0e0b13ebe5b72f70d0207e30f156eb32'
git-subtree-dir: Programming/E-PSYOPS
git-subtree-mainline: 95fa9d2259
git-subtree-split: de582f1b0e
2026-02-06 22:15:13 +01:00
95fa9d2259 Add 'Programming/NLP/' from commit '56650422d8395d618206beb497ba99c3a81191cf'
git-subtree-dir: Programming/NLP
git-subtree-mainline: f3345d8610
git-subtree-split: 56650422d8
2026-02-06 22:15:08 +01:00
f3345d8610 Add 'Programming/twm_4/' from commit '1ae0cf4d68ba652fbc390720bd18bb9b604dd119'
git-subtree-dir: Programming/twm_4
git-subtree-mainline: f497629ab7
git-subtree-split: 1ae0cf4d68
2026-02-06 22:15:03 +01:00
f497629ab7 Add 'Programming/PORR/' from commit '0a62d75a828646fb5c8e13f24327fb196fc17c8e'
git-subtree-dir: Programming/PORR
git-subtree-mainline: 9576b25315
git-subtree-split: 0a62d75a82
2026-02-06 22:15:00 +01:00
9576b25315 Add 'Programming/USD/' from commit 'b10db883f21e4356d3b370201f3a87898cf1dc5a'
git-subtree-dir: Programming/USD
git-subtree-mainline: 7cf25fc048
git-subtree-split: b10db883f2
2026-02-06 22:14:54 +01:00
7cf25fc048 Add 'Programming/PBAD/' from commit '71efbceab4e90b2b29e9e8882fd06d369c07a030'
git-subtree-dir: Programming/PBAD
git-subtree-mainline: 838184c85b
git-subtree-split: 71efbceab4
2026-02-06 22:14:48 +01:00
838184c85b Add 'Programming/ERSMS-project/' from commit 'd060e8285ad6f3dddde51a842f2c8498138afb0b'
git-subtree-dir: Programming/ERSMS-project
git-subtree-mainline: 7861d69ae9
git-subtree-split: d060e8285a
2026-02-06 22:14:41 +01:00
7861d69ae9 Add 'Programming/BD2/' from commit 'ec90ad34d5729cc958437073107feb5d76ba73f7'
git-subtree-dir: Programming/BD2
git-subtree-mainline: 4b5b8e44e8
git-subtree-split: ec90ad34d5
2026-02-06 22:14:37 +01:00
4b5b8e44e8 Add 'Programming/AIS/' from commit '0305825a3d73e8ffcbbc81b30af0c90c51d0a8fd'
git-subtree-dir: Programming/AIS
git-subtree-mainline: 17121f45b9
git-subtree-split: 0305825a3d
2026-02-06 22:14:32 +01:00
17121f45b9 Add 'Programming/psd_project/' from commit '458850e355e44401ee450b65161ac276a383524d'
git-subtree-dir: Programming/psd_project
git-subtree-mainline: 38501bf024
git-subtree-split: 458850e355
2026-02-06 22:14:27 +01:00
38501bf024 temp: move existing PSD, TRAK, STUP directories for subtree merge preparation 2026-02-06 22:14:20 +01:00
kacperlo
458850e355 change probabilities and parameters 2025-06-12 16:30:52 +02:00
kacperlo
ff642d68f0 Add windows scripts 2025-06-10 15:49:50 +02:00
kacperlo
41abb20094 tune up transaction generator 2025-06-10 15:49:43 +02:00
kacperlo
06f79923bb Fix anomaly detectors 2025-06-10 15:49:31 +02:00
0305825a3d feat: make models conststent with language 2025-06-09 17:22:09 +02:00
e200c24c8a feat: move unused file 2025-06-09 17:17:36 +02:00
83db0d2d7d feat: add application layer archi 2025-06-09 16:32:43 +02:00
049a1c0eb4 Merge branch 'master' of https://github.com/kuhyx/ais 2025-06-08 18:12:26 +02:00
f04525e43a feat: added archimate diagrams 2025-06-08 18:12:13 +02:00
f37d8d60c7 chore: cleanup wdwr 2025-05-25 14:53:18 +02:00
1c623cf40f chore: polish wdwr report 2025-05-25 00:31:58 +02:00
a10378df60 chore: make graphs larger 2025-05-25 00:27:43 +02:00
c5f92b0055 feat: updare wdwr report 2025-05-25 00:21:04 +02:00
3d3c1c8a9a feat: updare wdwr report 2025-05-25 00:20:00 +02:00
da8a82e077 chore: renamed parameters wdwr 2025-05-24 23:54:18 +02:00
1e5c98208e chore: rename files 2025-05-24 23:26:01 +02:00
fc0af17c60 chore: rename parameters wdwr 2025-05-24 23:22:59 +02:00
ec92fdb693 feat: update dat mod wdwr 2025-05-24 23:19:12 +02:00
c82e8f2351 chore: risk profit fix task 3 and 4 2025-05-24 22:51:24 +02:00
daec3d4c37 chore: wdwr new results 2025-05-24 22:10:19 +02:00
e10bd5eeb9 chore: update scenarios txt 2025-05-24 19:38:17 +02:00
7839f5e555 wip: wdwr 2025-05-24 17:15:34 +02:00
b2e0efe2ee chore: add gitignore 2025-05-05 16:00:00 +02:00
41057763b3 wip: report 3 2025-05-05 15:59:12 +02:00
ade11e2225 feat: setup environment psd3 2025-04-27 16:14:12 +02:00