AgentFabric overview presentation
This package produces two members of one document pair from source: a 20-slide
presentation and a prose narrative. Both are generated; neither is hand-edited.
If you find yourself editing the .pptx or the .docx, stop — edit the builder.
Sources of truth, in precedence order
| File |
Owns |
source-notes.md |
every factual claim, its authority in the tree, and its implemented / decided / proposed status |
deck-specification.md |
slide order, per-slide visual form, required claims, prohibitions |
narrative-specification.md |
narrative section order and depth |
build_deck.py |
the deck; the only way slides are produced |
build_narrative.py |
the narrative; the only way the document is produced |
render_slides.py |
PNG rendering, geometry checks, text-frame overlap detection |
verify_pair.py |
pair invariants: slide count, notes coverage, heading spine, manifest honesty |
qa-ledger.md |
what was run, when, and what it said |
A claim that is not in source-notes.md does not go on a slide. If you need a new
claim, add it there with its authority first, then use it.
Regenerating
docs/presentations/agentfabric-overview/regenerate.sh
That runs, in order: build_deck.py, build_narrative.py, render_slides.py,
verify_pair.py. It requires python-pptx, python-docx, lxml, and Pillow
importable from $OBJ_DIR/doc-toolchain, .venv, or python3; it will not
install them for you. Set AGENTFABRIC_DECK_SKIP_RENDER=1 to skip rendering
while iterating on prose.
Generated artifacts (agentfabric-overview.pptx, agentfabric-overview.docx)
live beside the builders. QA output — rendered PNGs, contact sheet, manifest,
acceptance record — lands in the ignored _build/agentfabric-overview/.
Rules that are not negotiable
- Diagrams are native shapes. Every diagram is built from PowerPoint
shapes, connectors, and text frames so the deck stays editable after a Google
Slides import. No raster diagrams, no decorative hero imagery, no image-only
slides.
- Speaker notes on every slide.
verify_pair.py fails the build otherwise.
Notes carry the mechanism and the qualifications that do not fit on the slide.
- Bullets are for inventories only. Lists are allowed where the content
genuinely is a list of NVIDIA or OSS projects. Everywhere else, use a diagram
or a flow.
- Status is never blurred. Implemented, decided-but-not-yet-runtime, and
proposed stay visibly distinct, and each item's placement traces to an ADR's
own status line.
- No invented numbers. No ROI, productivity, throughput, or maturity
figures. Counted figures carry their command and their measurement date, and
are re-measured on every regeneration rather than carried forward.
- Re-use is stated as re-use. A dependency is named as a dependency; a
design reference is named as a reference. NemoClaw is a reference, not the
deployed gateway.
- Publication requires explicit authorization.
publish_google_workspace.py
has no default destination and requires --slides-id and --authorized-by.
Do not publish, and do not record a published location in the manifest,
without that authorization from the repository owner.
Extending the deck
Adding or reordering slides means changing three files together:
deck-specification.md (the contract), build_deck.py (the implementation), and
verify_pair.py's EXPECTED_SLIDES (the gate). Update qa-ledger.md with the
run that proved it, and re-measure any count you touched.
Keep the narrative in step: if a claim changes on a slide, the corresponding
narrative section changes in the same commit. Divergence between the two members
on a shared claim is a defect, not a stylistic difference.
1---2name: agentfabric-overview-presentation3description: Regenerate or extend the AgentFabric overview document pair (20-slide deck plus prose narrative) from this authoring package. Read before editing any file in docs/presentations/agentfabric-overview/.4---56# AgentFabric overview presentation78This package produces two members of one document pair from source: a 20-slide9presentation and a prose narrative. Both are generated; neither is hand-edited.10If you find yourself editing the `.pptx` or the `.docx`, stop — edit the builder.1112## Sources of truth, in precedence order1314| File | Owns |15| --- | --- |16| `source-notes.md` | every factual claim, its authority in the tree, and its implemented / decided / proposed status |17| `deck-specification.md` | slide order, per-slide visual form, required claims, prohibitions |18| `narrative-specification.md` | narrative section order and depth |19| `build_deck.py` | the deck; the only way slides are produced |20| `build_narrative.py` | the narrative; the only way the document is produced |21| `render_slides.py` | PNG rendering, geometry checks, text-frame overlap detection |22| `verify_pair.py` | pair invariants: slide count, notes coverage, heading spine, manifest honesty |23| `qa-ledger.md` | what was run, when, and what it said |2425A claim that is not in `source-notes.md` does not go on a slide. If you need a new26claim, add it there **with its authority first**, then use it.2728## Regenerating2930```console31docs/presentations/agentfabric-overview/regenerate.sh32```3334That runs, in order: `build_deck.py`, `build_narrative.py`, `render_slides.py`,35`verify_pair.py`. It requires `python-pptx`, `python-docx`, `lxml`, and `Pillow`36importable from `$OBJ_DIR/doc-toolchain`, `.venv`, or `python3`; it will not37install them for you. Set `AGENTFABRIC_DECK_SKIP_RENDER=1` to skip rendering38while iterating on prose.3940Generated artifacts (`agentfabric-overview.pptx`, `agentfabric-overview.docx`)41live beside the builders. QA output — rendered PNGs, contact sheet, manifest,42acceptance record — lands in the ignored `_build/agentfabric-overview/`.4344## Rules that are not negotiable45461. **Diagrams are native shapes.** Every diagram is built from PowerPoint47 shapes, connectors, and text frames so the deck stays editable after a Google48 Slides import. No raster diagrams, no decorative hero imagery, no image-only49 slides.502. **Speaker notes on every slide.** `verify_pair.py` fails the build otherwise.51 Notes carry the mechanism and the qualifications that do not fit on the slide.523. **Bullets are for inventories only.** Lists are allowed where the content53 genuinely is a list of NVIDIA or OSS projects. Everywhere else, use a diagram54 or a flow.554. **Status is never blurred.** Implemented, decided-but-not-yet-runtime, and56 proposed stay visibly distinct, and each item's placement traces to an ADR's57 own status line.585. **No invented numbers.** No ROI, productivity, throughput, or maturity59 figures. Counted figures carry their command and their measurement date, and60 are re-measured on every regeneration rather than carried forward.616. **Re-use is stated as re-use.** A dependency is named as a dependency; a62 design reference is named as a reference. NemoClaw is a reference, not the63 deployed gateway.647. **Publication requires explicit authorization.** `publish_google_workspace.py`65 has no default destination and requires `--slides-id` and `--authorized-by`.66 Do not publish, and do not record a published location in the manifest,67 without that authorization from the repository owner.6869## Extending the deck7071Adding or reordering slides means changing three files together:72`deck-specification.md` (the contract), `build_deck.py` (the implementation), and73`verify_pair.py`'s `EXPECTED_SLIDES` (the gate). Update `qa-ledger.md` with the74run that proved it, and re-measure any count you touched.7576Keep the narrative in step: if a claim changes on a slide, the corresponding77narrative section changes in the same commit. Divergence between the two members78on a shared claim is a defect, not a stylistic difference.