coding.sgit.ai / admin / comms
Comms: tasks & requests
The working channel between the project lead and the agent building this site, kept in public and updated every release. Requests going the other way — things this site needs and cannot work out for itself — are at the bottom, and one of them is currently blocking every content page.
Tasks
| # | Task | State |
|---|---|---|
| T1 | CI pipeline: validate → auto-tag → deploy, matching the sibling sites | done |
| T2 | Auto-tagging on every push to dev, verified against version.txt and the commit subject, with historical backfill | done |
| T3 | The release gate: version agreement, internal links, canonical host, credential-shape leak tripwire | done |
| T4 | Shared chrome — nav, footer and version badge owned by one script and rewritten across the tree | done |
| T5 | Generators for documents/, llms-full.txt and sitemap.xml, each with a CI --check drift gate | done |
| T6 | !admin/build/ in .gitignore — the trap that shipped a sibling site without its own release gate | done |
| T7 | Publish the commissioning brief verbatim under /briefs/, with a generated reader page | done 13 documents, 12,983 words |
| T8 | Rewrite the front page from the brief, and grow the nav into the sections it calls for | done 3 nav groups → 5 |
| T11 | The eleven content pages, in the build order the brief sets: Python, the rules, JavaScript, CSS, HTML, Bash, for agents, enforcement, plus the house style, what is not enforced and the open questions | done |
| T12 | gen_inline.py — every number and every code example written into every page from the published survey, gated in CI. The brief's one site-specific house rule, as far as this repository can honour it | done 144 figures, 11 examples |
| T13 | Ship the linter and guard configs as files rather than prose, under /enforce/ | done 6 files |
| T14 | Redact the two source documents whose own do-not-publish list names the values it forbids, and add an AWS-account-id shape to the leak tripwire | done |
| T9 | Per-page .md twins beyond index.md | queued |
| T10 | A network entry on sgit.ai pointing at this site, now that it has content worth pointing at | queued |
| T16 | Vendor the markdown renderer. The document reader pages pull marked@12 from a third-party CDN at a pinned immutable URL — the same pattern this site publishes as a virtue — and fall back to a link to the raw file when it is unreachable. The fallback works; a site whose subject is dependency discipline should still not need the network to read its own sources | queued |
| T15 | Cross-links from the sibling sites: open-source.sgit.ai for the for-agents argument, and sg-compute.sgit.ai for the broken guard, which both sites own a half of | queued |
Requests — these need an answer from a person
| # | Request | State |
|---|---|---|
| R1 | The commissioning brief has not landed. Resolved in v0.2.0 — the pack arrived (v0.33.62, 24 August 2026, thirteen documents) and this release is the site it asked for. It is published in full at /documents/ and the machinery that was waiting for it needed no changes. | closed |
| R2 | Build-time extraction from the estate. The brief's one site-specific house rule is that every count and every code example is extracted from the repository at build time, with a path and a commit reference. This site cannot do that: this repository holds the website, not the 217,266 lines it describes. What is in place instead is gen_inline.py, which writes every figure and every snippet in from the published survey and fails CI if a page has drifted — so nothing on the site can disagree with the survey, and every number carries its survey date. The gap that remains is freshness, and closing it needs a decision: give this build read access to the estate and re-run the survey as a build step, or accept a dated snapshot and re-survey per release. Stated on the site itself. | for the lead |
| R4 | Four questions only a person can settle, each published unresolved rather than guessed at: is rule 9 Python-only (Q2); which design-token prefix wins (Q3); should a public coding standard document a dev. host (Q4 — this release publishes it deliberately and says why); and do the two CI guards that rules 10 and 16 claim actually exist (Q8, added by this site, and worth a five-minute look in the repository). | for the lead |
| R5 | The four remaining rules of the process group. The rule set has 31 numbered rules; the survey names five of the nine in the process group (23–31) and summarises rather than enumerates the rest. The rules page says so and does not invent them. Paste the group verbatim and it fills itself in — data/rules.json is the only file that changes. | for the lead |
| R3 | GitHub Pages environment. The workflow calls configure-pages with enablement: true and deploys from dev. The first run's deploy job failed immediately with no steps run — the github-pages environment did not yet recognise dev. dev is now the repository's default branch, which should resolve it; this push re-tests the deploy job. | retrying |
Notes from the build
- The pipeline was built first, deliberately. Every sibling site's early releases are the same story: content lands, then something in the release machinery turns out to be wrong, and the fix is a release of its own. Publishing an empty site through the full gate proves the gate on a tree small enough to read in one sitting.
- One trap was inherited and pre-empted. The Python
.gitignorethis repository starts from carriesbuild/, which silently swallowsadmin/build/. A sibling site shipped a first release whose validate job died on a missing file before it could check anything — the checks appeared to run and did not. The!admin/build/negation is in this repository's first commit. - The brief was followed in the order it set, and departed from twice. Build order was Python, the rules, JavaScript, CSS and HTML, Bash, for-agents, enforce — as written. The two departures are recorded on the site rather than quietly taken: the counts are written in from a dated survey rather than extracted at build time (R2), and the
/enforce/page corrects the brief's claim that aruffconfig can encode “no docstrings” — it cannot, and seven of the rules turn out to need custom checks. The table of what each tool genuinely cannot express. - Writing the guard is what found the discrepancies. Two fell out of running
test_house_style.pyagainst the estate's own quoted examples: rule 7 documents a three-line banner and every real example has a different number, and the canonical eleven-line file fails the import-alignment rule by one column. Neither is resolvable from here — the first is a documentation error, the second may be a transcription artifact in the survey — and both are published rather than smoothed over. The run → - Two documents are published with their own redaction lists redacted. The pack's do-not-publish list names an AWS account id, four live hostnames and four stack FQDNs in order to forbid them, so publishing it verbatim would publish them. The counts are kept, each change is marked in place, and the leak tripwire gained a 12-digit shape so it cannot come back. The full account →
- Nothing here claims to be finished. The nav lists the pages that exist, the version badge says
the five languages, and the release history says what shipped in one row per release. All three are easier to grow than to walk back.