Commit Graph

110 Commits

Author SHA1 Message Date
3f7f6c988d Merge branch 'rig-work' 2026-09-16 14:21:29 -03:00
3e864aa919 clean up rig 2026-09-16 14:21:21 -03:00
c3fe4422f2 makefile standalone 2026-09-16 13:52:04 -03:00
99b1988504 updated contract 2026-09-16 13:44:02 -03:00
5219bd5edb Merge branch 'ui' 2026-09-16 09:38:08 -03:00
f7910bf42b ui framework extraction updates 2026-09-16 09:38:04 -03:00
24aeadde83 dataconvert updates 2026-09-16 09:33:03 -03:00
5391f50755 Merge branch 'rig-work' 2026-09-16 09:31:36 -03:00
fed5d92034 rig updates 2026-09-16 09:31:13 -03:00
7b70b7edc6 adapter updates 2026-09-16 09:13:47 -03:00
74e246e67a dataconvert updates 2026-09-16 09:07:07 -03:00
e05f8f1fca dataconvert updates 2026-09-16 08:57:43 -03:00
b102ab8de7 Merge branch 'docgen-graphgen' 2026-09-16 08:20:35 -03:00
2f3e9c2634 dataconvert: spreadsheets to SQL seeds, layouts from config, row cap, SCHEMA.md
Converts CSV, xlsx/xls/ods, directories, ZIPs and globs into one INSERT
file per table. Producer-specific layouts (header/data rows found by a
marker cell) and sheet naming live in a gitignored dataconvert.json, with
dataconvert-example.json as the template. --max-rows samples each table
and SCHEMA.md records columns, types, row counts and full sizes.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-16 08:23:38 -03:00
86d051da48 add project, change cli file names, use config 2026-09-16 08:17:29 -03:00
6ce24586bd Merge branch 'berth' 2026-09-16 07:06:06 -03:00
7242b09e3a distill update 2026-09-16 05:27:53 -03:00
fbf47980d9 Merge branch 'rig-work' 2026-09-16 04:53:04 -03:00
b9238040a6 rig dep update 2026-09-16 04:52:12 -03:00
aba696df79 feature matching for clean extraction 2026-09-14 16:00:27 -03:00
974679a432 berth updates 2026-09-14 07:28:50 -03:00
26f99265ca Merge branch 'rig-work' 2026-09-14 07:12:19 -03:00
a29e0708e8 new conventions 2026-09-14 06:13:22 -03:00
a9df70cde0 berth init 2026-09-14 03:57:00 -03:00
e0426ecb01 self tests 2026-09-13 21:57:26 -03:00
37c4d588ea Merge branch 'main' into docgen-graphgen 2026-09-13 21:41:29 -03:00
160ee31b8c docgen: drop the superseded first pass, port the style harvester
The IR supersedes both intermediate designs (requirements D6, D7):
station/tools/docgen and the graph model that briefly lived in graphgen.
Shipping them beside atlas2/docgen would mean two graph models, which is the
thing the architecture argues against.

Carried across rather than lost:
  - style/extract.py and tokens.py, the offline theme harvester (R31). Rewritten
    to emit a *theme* — a slot-to-hex binding — rather than a whole style file,
    since what harvesting recovers is which colour a slot should be, not what a
    kind should look like.
  - graphgen/README.md, rewritten for what graphgen actually is now: the
    schema explorer. It fixes the blank station-index entry at run.py:304.

Two bugs found while doing it:
  - Canvas and ink are the two lightness extremes, not the two most common
    values. In a Graphviz SVG every label carries a fill, so the ink outnumbers
    the canvas 87 to 43 and the old rule produced a theme whose text was
    invisible against its own background.
  - A name defined in both branches of an if/else produced a duplicate id, which
    failed validation on docgen's own source. Disambiguated by line.
2026-09-13 21:41:29 -03:00
358b98f826 site emitter 2026-09-12 07:08:00 -03:00
7cb892ccfe add cases for code, dbs, and outline notebook generation 2026-09-12 06:50:05 -03:00
542d704da4 docgen iter 2 2026-09-12 06:42:49 -03:00
49a9f8ee57 sanitized rig 2026-09-12 02:44:40 -03:00
966f8fc821 attemp to develop rig in spr without an actual use case 2026-08-26 07:27:12 -03:00
83b6cbebe3 init rig 2026-08-20 11:24:42 -03:00
a65c92257d Stop build.py sweeping secrets and bytecode into gen/
gen/<room>/ is the docker build context and soleprint/Dockerfile is `COPY . .`,
so anything reaching gen/ reaches an image layer — and registry.mcrn.ar is
public-read. station/tools/tester/.env has been gitignored since the last
incident, but .gitignore does not bind shutil: copy_path() called
shutil.copytree() with no ignore=, so the key was copied into every built room.
Verified extractable from soleprint_localtest-soleprint:latest (built 8 days
ago) at /app/station/tools/tester/.env.

ctrl/deploy.sh's --exclude='.env' is why this looked handled; it only covers the
rsync path, not the build-and-push path.

Two layers now:
  - copy_path()/merge_into() filter .env, __pycache__, *.pyc, .git, node_modules
    and virtualenvs out of bulk directory copies. Single-file copies named by a
    caller are untouched, so cfg/<room>/.env.example still ships.
  - soleprint/.dockerignore repeats the rule at the docker boundary and is
    copied into the context beside the Dockerfile. Follows the convention
    soleprint/atlas/.dockerignore already set (.env, .env.*, !.env.example).

Runtime is unaffected: no Dockerfile COPYs a .env, and the room compose files
supply it with `env_file: - .env`, read from the host at run time.

The key itself still needs rotating — it remains in git history.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-19 02:59:26 -03:00
78595f1bd9 Declare pass-through words PHONY in the Makefile
`make build ctrl` ran the build and then printed "make: 'ctrl' is up to date."
The empty rule from $(eval $(ARGS):;@:) is not enough when the word names a real
directory — and cfg, ctrl, docs, gen and init all exist at this level. Only
.PHONY stops make consulting the filesystem.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-19 02:55:06 -03:00
9bcd439266 Normalise line endings to LF
spr had no .gitattributes at all, despite shipping ctrl/*.sh and generating
gen/<room>/ctrl/*.sh. A checkout on Windows/WSL rewrites those to CRLF, and a
shell script with CRLF fails as `bad interpreter: /usr/bin/env bash^M` — which
reads as a broken installer rather than a line-ending problem.

Copied verbatim from rig/.gitattributes and deliberately duplicated rather than
shared: rig/ has to carry its own so it survives being handed over alone.

No tracked file in either repo currently has CRLF, so `git add --renormalize .`
rewrote nothing. Landing it now, while that is true, keeps it off the diff of
whatever lands next.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-19 02:55:06 -03:00
74f03566f1 Ignore client rigs at the repo root, before rig's tree lands
A rig is a copy of rig/ renamed after the environment it models, so its k8s
files spell out a real architecture — the one thing that must not be committed
here. rig/.gitignore already refuses them, but only within rig/: a copy is a
SIBLING of rig/, where that file has no reach. spr had no rule at all, so the
first `git add -A` after the fold would have committed one.

Anchored at the root, and the negation names the full path because `*-rig/` is
unanchored and would otherwise match rig/sample-rig too.

Verified both ways: a file under client-rig/ is ignored, one under
rig/sample-rig/ is not.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-19 02:54:45 -03:00
2d9bc9289c updates 33.2 112 2026-08-11 07:30:27 -03:00
910927993e updates 33.1 139 2026-08-10 09:19:19 -03:00
9a6337e493 updates 33.1 84 2026-08-10 05:36:32 -03:00
0b04516cbb updates 33.1 56 2026-08-10 03:44:50 -03:00
ef63b02554 update 33.1 50 2026-08-10 03:23:30 -03:00
33f0559268 updates 33.1 23 2026-08-10 01:35:13 -03:00
dfb1991ae3 updates 33.1 8 2026-08-10 00:32:47 -03:00
9fc4c23143 update docs 2026-05-06 12:04:19 -03:00
973f0a01c9 update sample app 2026-05-06 11:59:42 -03:00
38c2cfe50f untrack sample .env files, add .env.example placeholders
Live .env files (with real OAuth secrets) were tracked. Replaced with .env.example
templates. Existing .env files kept on disk so the sample still runs.

NOTE: prior history (8c5deb7, 88c2860) on gitea/main still contains the leaked
GOOGLE_CLIENT_SECRET. Rotate the credential in Google Cloud Console and decide
whether to rewrite history.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 05:33:34 -03:00
5f9cac1947 add fixture-invoicing example, sample-room wrap, kind cluster support
- examples/fixture-invoicing/: FastAPI + Vue + Postgres demo (4-entity invoice fixture)
- cfg/sample/: wraps the fixture (managed.repos points at examples/)
- ctrl/kind-{up,down,status}.sh + per-room k8s render in soleprint/ctrl/k8s/
- build.py: relative repo paths, resilient rmtree, optional k8s render hook
- cfg/.gitignore: stop ignoring sample/ and standalone/ template rooms

Manifests render cleanly but kind cluster has not been run end-to-end yet.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 05:30:52 -03:00
b886455431 untrack cfg/amar/ (already gitignored, has its own repo)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 05:06:48 -03:00
ec3391fe72 bootstrap datagen and graphgen 2026-04-16 18:59:30 -03:00