This commit is contained in:
+34
@@ -0,0 +1,34 @@
|
||||
**Collaborator:** aidlc-developer-agent
|
||||
|
||||
## Contribution
|
||||
|
||||
Assessing code-style conventions, file organization, and layer boundaries.
|
||||
|
||||
- The code-style proposal (plain HTML5/CSS/JS, no build step) is sound and matches
|
||||
the constraint "never published beyond localhost." Avoid introducing any tooling
|
||||
that would create a build/runtime dependency.
|
||||
- File organization recommendation for the render pipeline:
|
||||
- `content/` — one markdown file per newspaper edition (the authored content,
|
||||
the source of truth).
|
||||
- `templates/` — the newspaper layout: HTML skeleton + print CSS.
|
||||
- `templates/print.css` — the A4 print stylesheet (`@page` rules, column
|
||||
layout, page-breaks); keep it separate from screen styling so print stays
|
||||
predictable.
|
||||
- `render.js` (or a small `index.html` that reads content) — the
|
||||
markdown→HTML transform mapping articles into the newspaper grid.
|
||||
- `index.html` — the generated/standalone page opened locally.
|
||||
- Layer boundaries: content (markdown) stays fully separated from presentation
|
||||
(templates) — one article's text never lives in the stylesheet. The transform
|
||||
is the only bridge.
|
||||
- Error handling: markdown-to-HTML must be tolerant of empty sections and
|
||||
unusual chars without throwing; a missing content file should degrade to a
|
||||
friendly empty-state, never a blank/broken page.
|
||||
- Naming: semantic, self-explanatory (`content/`, `templates/`, `render.js`), no
|
||||
framework conventions needed since there is no framework.
|
||||
|
||||
## Positions
|
||||
- AGREE: language-idiomatic plain HTML5/CSS/JS, no bundler or transpiler.
|
||||
- AGREE: no deployment.
|
||||
- OBJECT (minor): the draft lists code style as "no build step" but should also
|
||||
state the file layout that enforces the content/presentation separation, so
|
||||
the practice survives into construction.
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
**Collaborator:** aidlc-devsecops-agent
|
||||
|
||||
## Contribution
|
||||
|
||||
Assessing lint/format, secret handling, dependency and supply-chain controls.
|
||||
|
||||
- Dependency surface: this is the strong point of a no-build, no-framework
|
||||
approach — zero third-party runtime dependencies means no supply-chain risk,
|
||||
no vulnerable transitive packages, no lockfile to keep fresh. The proposal
|
||||
should make "no external runtime dependencies" an explicit constraint and keep
|
||||
it that way.
|
||||
- No secrets: the project is static content; there are no credentials, keys, or
|
||||
tokens. No credential scanning is needed, but the practice should be stated in
|
||||
case a local script or environment sneaks in later — never commit anything that
|
||||
looks like a secret.
|
||||
- Lint/format: with no toolchain, a formatter requirement is disproportionate.
|
||||
The practical, proportionate posture is a light manual hygiene rule (consistent
|
||||
indentation, valid HTML5, no inline `style=` that breaks the print layout)
|
||||
rather than wiring ESLint/Prettier into an otherwise zero-dependency repo.
|
||||
- Supply-chain: because everything must run from `file://`, the page must make
|
||||
**zero network requests** (no CDN fonts, no `<script src="https://...">`). This
|
||||
is both a security posture (no third-party code executed locally) and a
|
||||
correctness requirement (it must work offline). This is the single most
|
||||
important rule for this project.
|
||||
- Local-only trust: never reference content, fonts, or assets by remote URL;
|
||||
everything ships with the page.
|
||||
|
||||
## Positions
|
||||
- AGREE: skip the skeleton and keep tooling minimal.
|
||||
- AGREE: no deployment.
|
||||
- OBJECT: the draft's "no external dependencies" is present, but it must be
|
||||
sharpened into an explicit, load-bearing rule — this is a security posture
|
||||
(nothing ships from the network), not just a stylistic preference, and it
|
||||
should be a Mandated rule in `discovered-rules.md`.
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
**Collaborator:** aidlc-quality-agent
|
||||
|
||||
## Contribution
|
||||
|
||||
Assessing testing posture, coverage, and quality gates for the wedding newspaper generator.
|
||||
|
||||
- The proposed test-after posture is appropriate. This is a static render-and-print
|
||||
deliverable with no production runtime, so an exhaustive unit suite would be
|
||||
disproportionate.
|
||||
- The quality-critical surfaces worth locking:
|
||||
1. **Render validity** — sample article markdown must always map to complete,
|
||||
correctly-structured HTML (no dropped sections, no malformed article rows).
|
||||
2. **Print integrity** — the print stylesheet must keep every newspaper section
|
||||
inside the A4 sheet with no clipping, no orphaned columns, and correct
|
||||
page-break behaviour for multi-page output.
|
||||
3. **Content fidelity** — markdown source → displayed text must round-trip
|
||||
without mangled escaping (quotes, em-dashes, apostrophes).
|
||||
- Recommend a small automated check that: parses a fixture markdown set, asserts
|
||||
the expected article count and section headings appear in the rendered HTML,
|
||||
and (where a headless print can run) verifies the A4 box model has no overflow.
|
||||
- Keep coverage expectations modest. The 80% line-coverage floor classic scope
|
||||
implies applies to runnable logic, not markup; for a no-build HTML generator
|
||||
that floor is best interpreted as "every transformation function exercised",
|
||||
not "80% of the stylesheet".
|
||||
- Quality gate: the deliverable is judged on whether it prints cleanly to A4 and
|
||||
renders the authored markdown faithfully — that is the acceptance signal, not
|
||||
a CI pipeline.
|
||||
|
||||
## Positions
|
||||
- AGREE: test-after posture for this project — the value is in render/print
|
||||
verification, not a broad unit suite.
|
||||
- AGREE: skipping the walking skeleton — no integration surface to prove.
|
||||
- OBJECT: the draft should be more explicit that the "testable layer" is the
|
||||
markdown→HTML transform and the print CSS, so the testing posture reads as
|
||||
concrete rather than generic.
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
# Discovered Rules — Finalized
|
||||
|
||||
> Hard constraints surfaced from the project description, the empirical
|
||||
> research, and the interview. Promoted to `memory/project.md` at the
|
||||
> affirmation gate.
|
||||
|
||||
## Mandated
|
||||
|
||||
- ALWAYS generate pure HTML5 + CSS with no build step and no external
|
||||
dependencies, so the result runs entirely from the local filesystem
|
||||
(never beyond localhost).
|
||||
- ALWAYS make the rendered page printable cleanly to A4 from the browser's
|
||||
print dialog.
|
||||
- ALWAYS fetch or read content only through user-granted means (native file
|
||||
picker / drag-and-drop) when the page runs from `file://` — never rely on
|
||||
`fetch()` of sibling local files, because the opaque-origin policy blocks it
|
||||
in stock browsers (empirically verified: plain Chromium blocks
|
||||
`fetch('article.txt')` from a `file://` page, while the native file picker
|
||||
works).
|
||||
- ALWAYS make the page work with zero network requests (no CDN fonts, no
|
||||
remote `<script>`/`<style>`), so it is fully functional offline from `file://`.
|
||||
|
||||
## Forbidden
|
||||
|
||||
- NEVER reference content, fonts, or assets by remote URL; everything ships
|
||||
with the page.
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
# Evidence
|
||||
|
||||
## Project Type
|
||||
Greenfield. No prior workspace content; the repo is a freshly initialized git
|
||||
repo with no commits.
|
||||
|
||||
## Sources Scanned
|
||||
- `aidlc/spaces/default/memory/org.md` — framework defaults for the five
|
||||
practice areas (way of working, walking skeleton, testing posture,
|
||||
deployment, code style).
|
||||
- Initial project description: "wedding newspaper generator — author content as
|
||||
markdown, render as a printable newspaper in pure HTML5+CSS, print to A4 from
|
||||
the browser. Fully local, never deployed beyond localhost."
|
||||
- Primary-source web research (whatwg fetch spec, MDN same-origin policy,
|
||||
CORS handbook) on whether a `file://` page can read sibling local files.
|
||||
- **Empirical browser test** (2026-09-13): real Chromium driven via node
|
||||
+ playwright-core. Plain Chromium: `fetch('article.txt')` from a `file://`
|
||||
page → blocked (`TypeError: Failed to fetch`, CORS from origin 'null');
|
||||
native file picker → works. Chromium with `--allow-file-access-from-files`:
|
||||
fetch works but requires a non-default, security-weakening launch flag.
|
||||
|
||||
## Participant Evidence
|
||||
- Lead draft: team-practices.md, discovered-rules.md, evidence.md,
|
||||
practices-discovery-timestamp.md.
|
||||
- Support contributions (contributed into the artifacts):
|
||||
- `contributions/aidlc-quality-agent.md` — test-after posture justified;
|
||||
renders/print as the testable surfaces; keep A4 containment + markdown
|
||||
fidelity as the acceptance checks.
|
||||
- `contributions/aidlc-developer-agent.md` — content/presentation separation
|
||||
(`content/` vs `templates/`), tolerant transform, plain-HTML file layout.
|
||||
- `contributions/aidlc-devsecops-agent.md` — zero-dependency = zero
|
||||
supply-chain risk; no-remote-URLs as a load-bearing security rule; the page
|
||||
must work offline.
|
||||
|
||||
## Interview Decisions
|
||||
- Q1 Way of working: `C` direct to main (solo local project).
|
||||
- Q2 Walking skeleton: `B` no separate skeleton step.
|
||||
- Q3 Testing posture: `C` unit tests for the markdown→HTML transform.
|
||||
- Q4 Deployment/run: `X` resolved via research + confirmation — file-only
|
||||
static Python generator emitting a self-contained `newspaper.html`, with an
|
||||
in-page file-picker live-load path; no server, never beyond localhost.
|
||||
- Q5 Code style: `C` no style rules, minimal and pragmatic.
|
||||
- Q6 Content/presentation: `A` separate `content/` and `templates/`.
|
||||
|
||||
## Unresolved Uncertainty
|
||||
- None blocking. The browser `file://` constraint is settled empirically: use
|
||||
user-granted file access (picker/drag-drop), never `fetch()` of local files,
|
||||
except under the non-default Chromium flag.
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
<!-- INVARIANT: examples are single-line HTML comments so a fresh template parses to total=0 (MEMORY_EMPTY). Do NOT un-comment or split across lines. t100 guards this. -->
|
||||
> This file is kept up to date automatically while the stage runs. Add observations at the review step, not by editing here directly.
|
||||
|
||||
## Interpretations
|
||||
<!-- example: 2026-05-29T10:14:32Z — chose REST over GraphQL; the consuming team only needs CRUD, revisit if subscriptions land -->
|
||||
|
||||
## Deviations
|
||||
<!-- example: 2026-05-29T10:14:32Z — skipped the optional caching layer the stage prose suggested; the dataset is small enough that it adds risk -->
|
||||
|
||||
## Tradeoffs
|
||||
<!-- example: 2026-05-29T10:14:32Z — picked TDD over BDD this run; the team is unit-first and the domain is well-understood -->
|
||||
|
||||
## Open questions
|
||||
<!-- example: 2026-05-29T10:14:32Z — confirm the retention window with compliance before the next stage hardens the schema -->
|
||||
2026-09-13T11:07:00Z — GREENFIELD practices discovery running inline; authored lead draft + 3 specialist contributions (quality/developer/devsecops) as contributions/*.md
|
||||
2026-09-13T11:07:00Z — Tradeoff — zero-dependency no-build approach wins for local-only security (nothing ships from network) at the cost of no automated CI gates; verification leans on render/print checks
|
||||
2026-09-13T11:22:40Z — Interpretation — Q4 resolved to file-only static Python generator + in-page file-picker after empirical Chromium test: fetch() of sibling files is blocked from file:// (opaque origin) but the native file picker works — user-granted reads bypass CORS
|
||||
2026-09-13T11:22:40Z — Interpretation — Testing posture is unit tests on the markdown->HTML transform, not a broad suite; print-to-A4 stays the real-world acceptance check
|
||||
2026-09-13T11:22:40Z — Deviation — aidlc-log answer refused (no HUMAN_TURN seam on this custom fork build); recorded answers directly in the authoritative questions file instead
|
||||
+89
@@ -0,0 +1,89 @@
|
||||
# Practices Discovery — Interview Questions
|
||||
|
||||
> Fill in each `[Answer]:` tag. Options A-E plus X (Other). The file is the
|
||||
> authoritative record of your practice decisions.
|
||||
|
||||
## Q1: Way of Working
|
||||
|
||||
How should we plan development work for this project — should we use feature branches that merge back into the main line, or work directly on the main line?
|
||||
|
||||
A) Trunk-based with short-lived feature branches (2-3 days max, merge to main)
|
||||
B) Direct to main for everyday edits; branches only for anything larger
|
||||
C) Direct to main only — no branches, this is a solo local project
|
||||
D) Feature branches required for everything, no direct-to-main
|
||||
E) (depends on project size)
|
||||
X) Other (please specify)
|
||||
|
||||
[Answer]: C
|
||||
|
||||
## Q2: Walking Skeleton
|
||||
|
||||
Build a thin end-to-end slice first? A walking skeleton is a minimal version that runs the whole way through — one markdown file turning into one printed A4 page — built first to prove the pieces connect before the real features (full layout, many articles, styling) go in.
|
||||
|
||||
A) Yes — prove the slice end-to-end before building the full layout
|
||||
B) No — the layout and content can be built together; no separate skeleton step
|
||||
X) Other (please specify)
|
||||
|
||||
[Answer]: B
|
||||
|
||||
## Q3: Testing Posture
|
||||
|
||||
What testing posture should this project use? The realistic surfaces worth verifying are that sample markdown renders into correct newspaper HTML and that the print stylesheet stays inside an A4 sheet.
|
||||
|
||||
A) Test-after with a small render/print verification check (recommended)
|
||||
B) No tests — open the page and eyeball it; the print is the acceptance check
|
||||
C) Unit tests for the markdown→HTML transform only
|
||||
D) Behaviour-driven: write the article → printed-page scenarios first
|
||||
X) Other (please specify)
|
||||
|
||||
[Answer]: C
|
||||
|
||||
## Q4: Deployment
|
||||
|
||||
How should this project be "released" or run? This site is local-only by requirement and will never be published beyond localhost.
|
||||
|
||||
A) Open the generated HTML directly from the filesystem (file://) — nothing served
|
||||
B) Serve from a tiny local HTTP server (http://localhost) when viewing
|
||||
C) Both — static file works, and a start script for a localhost server
|
||||
X) Other (please specify)
|
||||
|
||||
[Answer]: X - RESOLVED (research + user confirmation 2026-09-13): File-only static generator. A Python script (the primary path, using the working `uv` runtime) reads content from content/ and emits a self-contained `newspaper.html`; the page is opened directly via file:// and printed to A4. The generated page also includes a native file-picker / drag-and-drop load path so content can be swapped in live without regenerating — empirically verified working in stock Chromium from file:// (the file picker is user-granted and bypasses the opaque-origin CORS restriction that blocks fetch()). No server, no browser flags, never deployed beyond localhost. The generator may optionally call AI to draft newspaper copy before rendering.
|
||||
|
||||
## Q5: Code Style
|
||||
|
||||
What code-style and tooling conventions should we keep? The project is pure HTML5 + CSS + vanilla JS with no framework and no build step.
|
||||
|
||||
A) Plain HTML5/CSS/JS, no tooling; consistent formatting by hand
|
||||
B) Plain HTML5/CSS/JS plus a lightweight formatter (e.g. Prettier) if available
|
||||
C) No style rules — keep it minimal and pragmatic
|
||||
X) Other (please specify)
|
||||
|
||||
[Answer]: C
|
||||
|
||||
## Q6: Content ↔ Presentation Separation
|
||||
|
||||
Content (markdown articles) and presentation (the newspaper layout + print stylesheet) — should they be kept in separate folders so the layout never gets tangled up with article text?
|
||||
|
||||
A) Yes — separate `content/` and `templates/` (recommended)
|
||||
B) No — keep it all inline; simplest possible layout
|
||||
X) Other (please specify)
|
||||
|
||||
[Answer]: A
|
||||
|
||||
## Consolidated Summary Confirmation
|
||||
|
||||
> Summary of your six answers before the final practices artifacts are locked:
|
||||
>
|
||||
> - Way of working: direct to main (Q1 = C)
|
||||
> - Walking skeleton: no separate skeleton step (Q2 = B)
|
||||
> - Testing posture: unit tests for the markdown→HTML transform (Q3 = C)
|
||||
> - Deployment/run: file-only static Python generator + in-page file-picker live path, no server (Q4 = X, resolved)
|
||||
> - Code style: minimal/pragmatic, no style rules (Q5 = C)
|
||||
> - Content/presentation: separate `content/` and `templates/` (Q6 = A)
|
||||
|
||||
Does this all look correct before I generate the artifact?
|
||||
|
||||
- Looks correct
|
||||
- Request changes
|
||||
|
||||
[Answer]: Looks correct
|
||||
+1
@@ -0,0 +1 @@
|
||||
Discovered: 2026-09-13T11:22:40Z at commit (no commits yet — initial working tree)
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
# Team Practices — Finalized
|
||||
|
||||
> Affirmed team practices for the wedding newspaper generator, produced from
|
||||
> the interview answers + three specialist reviews, pending affirmation gate.
|
||||
|
||||
## Way of Working
|
||||
|
||||
Direct to main. This is a solo local project, so everyday edits go straight to
|
||||
the main line; we use branches only if something larger ever warrants a review
|
||||
boundary. No feature-branch ceremony for routine work.
|
||||
|
||||
## Walking Skeleton
|
||||
|
||||
Skip the separate walking-skeleton step. The layout and content are built
|
||||
together — there is no integration surface to prove, and a thin end-to-end slice
|
||||
(one markdown file → one rendered A4 page) emerges naturally as the first piece
|
||||
anyway.
|
||||
|
||||
## Testing Posture
|
||||
|
||||
Unit tests for the markdown→HTML transform. The primary testable surface is the
|
||||
renderer: sample article markdown must always map to complete, correctly
|
||||
structured newspaper HTML with no dropped sections or mangled escaping, and the
|
||||
print stylesheet must keep content inside an A4 sheet. We write focused tests for
|
||||
the transform logic rather than an exhaustive suite; the print result remains the
|
||||
real-world acceptance check.
|
||||
|
||||
Methodology: test-after
|
||||
Ordering: implement the transform and layout, then write and run tests that
|
||||
verify markdown→HTML fidelity and A4 print containment.
|
||||
|
||||
## Deployment
|
||||
|
||||
File-only, no server. A Python static generator (primary path, run with the
|
||||
working `uv` runtime) reads content files and emits a self-contained
|
||||
`newspaper.html`. The page is opened directly via `file://` and printed to A4
|
||||
from the browser print dialog. The generated page also includes a native
|
||||
file-picker / drag-and-drop load path so content can be swapped in live without
|
||||
regenerating. No server, no browser flags, never deployed beyond localhost. The
|
||||
generator may optionally call AI to draft newspaper copy before rendering.
|
||||
|
||||
## Code Style
|
||||
|
||||
Minimal and pragmatic, no style rules beyond staying consistent. Pure HTML5 +
|
||||
CSS + vanilla JS with no build step and no framework. Keep formatting clean by
|
||||
hand; do not introduce tooling, transpilers, or bundlers.
|
||||
|
||||
## Forbidden
|
||||
|
||||
(none affirmed by the team)
|
||||
|
||||
## Mandated
|
||||
|
||||
- ALWAYS keep the output runnable purely from the local filesystem with no
|
||||
network requests (affirmed)
|
||||
Reference in New Issue
Block a user