Cyber & Networks
For AI/ML, DevSecOps, cyber, and enterprise IT workflows where context, memory, and evidence must stay inside the controlled network.Cyber / IT
Download PDFFrom 59e52a029730b95db03b666df25f767d6d166afa Mon Sep 17 00:00:00 2001 From: Perseus Computing <51974392+tcconnally@users.noreply.github.com> Date: Mon, 17 Aug 2026 23:45:30 +0000 Subject: [PATCH 1/3] fix(government): clarify audience fit labels --- government/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/government/index.html b/government/index.html index ebf9852b..3871d8be 100644 --- a/government/index.html +++ b/government/index.html @@ -68,7 +68,7 @@
Infrastructure for AI agents that need their context, memory, and evidence to stay inside the mission boundary.
Perseus Computing builds local-first infrastructure for controlled, disconnected, private-VPC, and regulated environments. Start with the document; choose a tailored version only when the conversation calls for it.
Each version keeps the same evidence and procurement facts while changing the front door and fit language.
For AI/ML, DevSecOps, cyber, and enterprise IT workflows where context, memory, and evidence must stay inside the controlled network.Cyber / IT
Download PDFFor software factories and distributed decision workflows where Perseus can sit beside—not replace—the mission platform.Software factory / decisions
Download PDFFor a prime, integrator, or technical partner exploring local, reviewable AI around sensing, EW, PNT, or mission-system workflows.Partner / integration
Download PDFCyber & Networks is the clearest direct route. C3BM is enabling; Electronic Systems is partner-led.
For AI/ML, DevSecOps, cyber, and enterprise IT workflows where context, memory, and evidence must stay inside the controlled network.Cyber / IT
Download PDFFor software factories and distributed decision workflows where Perseus can sit beside—not replace—the mission platform.Software factory / decisions
Download PDFFor a prime, integrator, or technical partner exploring local, reviewable AI around sensing, EW, PNT, or mission-system workflows.Partner / integration
Download PDFThe problem with lost state, the local context–memory–evidence system, the audience fit, and the smallest useful first conversation.
Measured evidence, procurement identifiers, licensing and SBOM posture, deployment options, and a direct contact path.
Air-gapped, on-premises, private VPC, or controlled network.
SPRS score; CMMC Level 2 self-assessment posture is scoped explicitly.
Perseus Computing LLC · UEI PJS2LW7HAK35.
SBOM materials published; no mandatory proprietary runtime.
Send the mission workflow, its data boundary, and the integration surface. Thomas can point you to the right version or technical conversation.
Infrastructure for AI agents that need their context, memory, and evidence to stay inside the mission boundary.
Perseus Computing builds local-first infrastructure for controlled, disconnected, private-VPC, and regulated environments. Start with the document; choose a tailored version only when the conversation calls for it.
Cyber & Networks is the clearest direct route. C3BM is enabling; Electronic Systems is partner-led.
For AI/ML, DevSecOps, cyber, and enterprise IT workflows where context, memory, and evidence must stay inside the controlled network.Cyber / IT
Download PDFFor software factories and distributed decision workflows where Perseus can sit beside—not replace—the mission platform.Software factory / decisions
Download PDFFor a prime, integrator, or technical partner exploring local, reviewable AI around sensing, EW, PNT, or mission-system workflows.Partner / integration
Download PDFInfrastructure for AI agents that need their context, memory, and evidence to stay inside the mission boundary.
Perseus Computing builds local-first infrastructure for controlled, disconnected, private-VPC, and regulated environments. Start with the document; choose a tailored version only when the conversation calls for it.
Cyber & Networks is the clearest direct route. C3BM is enabling; Electronic Systems is partner-led.
For AI/ML, DevSecOps, cyber, and enterprise IT workflows where context, memory, and evidence must stay inside the controlled network.Cyber / IT
Download PDFFor software factories and distributed decision workflows where Perseus can sit beside—not replace—the mission platform.Software factory / decisions
Download PDFFor a prime, integrator, or technical partner exploring local, reviewable AI around sensing, EW, PNT, or mission-system workflows.Partner / integration
Download PDFThe problem with lost state, the local context–memory–evidence system, the audience fit, and the smallest useful first conversation.
Measured evidence, procurement identifiers, licensing and SBOM posture, deployment options, and a direct contact path.
Air-gapped, on-premises, private VPC, or controlled network.
SPRS score; CMMC Level 2 self-assessment posture is scoped explicitly.
Perseus Computing LLC · UEI PJS2LW7HAK35.
SBOM materials published; no mandatory proprietary runtime.
Send the mission workflow, its data boundary, and the integration surface. Thomas can point you to the right version or technical conversation.
Send the mission workflow, its data boundary, and the integration surface. We can point you to the right version or technical conversation.
U0@k1VKpB
zS19Le^ZN^R1a-gi2p&pMukQH0>9D4=x8(@%@9?QQJ~2W{84(3F@{y5RKDdvY?3hTS
zBL>V$E~oVNm#T%a5H|Ou2?^I9ld_|mjrOanbkK^8K^^LK5|^fO-Oycp?VX1U%%GFx
z8ug1-(63J3`e;Gw6hGd08*avIp0f{sc-Sa!RhNox&e_MA+>{!x$BKtu?EpN^keSq3
zL-!sZ&$^4=*PP7O`tq3G$#9B#UDpz@=a;ab!y%$Tvj9@A@{t+OU!^Pdy1Gu~ax4!(
zCG?^}UJHuls1h Hg+%^Vgt{PsEzpMxW`GdE?-p~Y?$+~g7IX%gtmvt)JD)^KxCJ&4tUW-srXyqkSC
z7W C#Vo!MGeA+N)`jR!(iHuLpX&xZCR2QnOeY+O H0`T6
z-9rAwe*I6Wd;5jtQ1ln_w<|}sT6imW%l(Z;X4SNxD;NHah9X%_@*ijzlGPvnfrexM
z+_!~h#f*R8qmZol@sBhrt4#f$w5&++Px4Td{3kvFC$oyw?|nb1<-OeWw>s-=lKZ9i
z2#UZ+3Z-snD?^#ITFBM1kXwtqkpxZQ7W1ETn7_(@DEHp~b-5RUa*mgk&;FtC`wO0h
uwA?2lTNCRMmX=%rMAOOo896~WVzGbgu}KE0
z)m}}G4ZXZ50EM{OF)IX2PRuq2b_B1G{{V|_ksFlMLFHK4?Qo9E56%;P;#5~vr6_cE
zwNF}^7;(n}j)$meScS&a7*C75*(}L$4dS4Ae(<33r+q7Gh-%&TS5)B|Srgyh3GeV5
zQvPXZ`H%qwrQ7wHr87q3m?vdllYr`2M{e_CfUyD4zSc?U*;D
+IM@1||}h
Pg!P~%#ZN2dY1Bhck~
z;17d6&^NC9+Y!h7BW
BR&|`B;9
z$g|A=R=;9!yj%ri@}Ov0Y{~Ha`#44??nH(ws^3mpW4ZqDx{h@b3VWH6481;r>fWbz
z=$1x9m@B@|V9D}@u3#de-d9^6@Xb?5m-XXEZ=icD1jG^aSgb$lafCRB&~ErU`8102
z^0T64QD_>C#Ul&voiKXeOnHIbcdLopUsC5AZ
"), style)
-def rich(text: str, style: ParagraphStyle) -> Paragraph:
+def markup(text: str, style: ParagraphStyle) -> Paragraph:
return Paragraph(text, style)
-def section_heading(title: str, st: dict[str, ParagraphStyle], color=BLUE) -> list:
- return [
- rich(escape(title.upper()), st["section"]),
- HRFlowable(width="100%", thickness=0.7, color=color, spaceBefore=1, spaceAfter=7),
- ]
-
+def rule_section(title: str, st: dict[str, ParagraphStyle]) -> list:
+ return [markup(escape(title.upper()), st["section"]), HRFlowable(width="100%", thickness=0.65, color=RULE, spaceBefore=3, spaceAfter=8)]
-def bullet(label: str, text: str, st: dict[str, ParagraphStyle]) -> Paragraph:
- return rich(f"• {escape(label)} {escape(text)}", st["body_small"])
-
-def header(st: dict[str, ParagraphStyle], page_label: str) -> Table:
- left = [rich("PERSEUS COMPUTING LLC", st["brand"]), rich("CONTEXT · MEMORY · EVIDENCE", st["brand_sub"])]
- right = [rich(escape(page_label.upper()), st["eyebrow_white"]), rich("CAPABILITY STATEMENT · 2026", st["brand_sub"])]
- table = Table([[left, right]], colWidths=[4.65 * inch, 2.75 * inch])
- table.setStyle(TableStyle([
+def header(page_title: str, st: dict[str, ParagraphStyle]) -> Table:
+ left = [markup("PERSEUS COMPUTING LLC", st["header_brand"]), markup("CONTEXT · MEMORY · EVIDENCE", st["header_meta"])]
+ right = [markup(escape(page_title.upper()), st["header_meta"]), markup("DEFENSE CAPABILITY BRIEF · 2026", st["header_meta"])]
+ t = Table([[left, right]], colWidths=[4.65 * inch, 2.70 * inch])
+ t.setStyle(TableStyle([
("BACKGROUND", (0, 0), (-1, -1), NAVY),
("VALIGN", (0, 0), (-1, -1), "MIDDLE"),
("ALIGN", (1, 0), (1, 0), "RIGHT"),
- ("LEFTPADDING", (0, 0), (0, 0), 13),
- ("RIGHTPADDING", (0, 0), (0, 0), 5),
- ("LEFTPADDING", (1, 0), (1, 0), 5),
- ("RIGHTPADDING", (1, 0), (1, 0), 13),
- ("TOPPADDING", (0, 0), (-1, -1), 10),
- ("BOTTOMPADDING", (0, 0), (-1, -1), 10),
+ ("LEFTPADDING", (0, 0), (0, 0), 12), ("RIGHTPADDING", (0, 0), (0, 0), 4),
+ ("LEFTPADDING", (1, 0), (1, 0), 4), ("RIGHTPADDING", (1, 0), (1, 0), 12),
+ ("TOPPADDING", (0, 0), (-1, -1), 9), ("BOTTOMPADDING", (0, 0), (-1, -1), 9),
]))
- return table
+ return t
-def at_a_glance(profile: dict, st: dict[str, ParagraphStyle]) -> Table:
+def info_band(profile: dict, st: dict[str, ParagraphStyle]) -> Table:
+ fit = "Three audience routes" if profile["audience_label"].startswith("MASTER") else str(profile.get("fit_tag") or "")
rows = [
- [p("PRIMARY FIT", st["at_glance_label"]), p(profile["fit_tag"], st["at_glance_value"])],
- [p("DEPLOYMENT", st["at_glance_label"]), p("Local / air-gapped / private VPC", st["at_glance_value"])],
- [p("PROCUREMENT", st["at_glance_label"]), p("SAM active · CAGE 22JC5", st["at_glance_value"])],
- [p("CONTACT", st["at_glance_label"]), p("perseus@perseus.observer", st["at_glance_value"])],
+ [markup("FOCUS
" + escape(fit), st["body_small"]), markup("DEPLOYMENT
Local · air-gapped · private VPC", st["body_small"]), markup("IDENTITY
UEI PJS2LW7HAK35 · CAGE 22JC5", st["body_small"]), markup("LICENSE
MIT · SBOM published", st["body_small"])],
]
- table = Table(rows, colWidths=[0.88 * inch, 2.13 * inch])
- table.setStyle(TableStyle([
- ("BACKGROUND", (0, 0), (-1, -1), PALE_BLUE),
- ("BOX", (0, 0), (-1, -1), 0.6, RULE),
- ("INNERGRID", (0, 0), (-1, -1), 0.35, RULE),
+ t = Table(rows, colWidths=[1.84 * inch] * 4)
+ t.setStyle(TableStyle([
+ ("BACKGROUND", (0, 0), (-1, -1), PALE),
+ ("LINEABOVE", (0, 0), (-1, 0), 0.55, RULE),
+ ("LINEBELOW", (0, 0), (-1, 0), 0.55, RULE),
+ ("LINEBEFORE", (1, 0), (-1, 0), 0.35, RULE),
("VALIGN", (0, 0), (-1, -1), "TOP"),
- ("LEFTPADDING", (0, 0), (-1, -1), 7),
- ("RIGHTPADDING", (0, 0), (-1, -1), 7),
- ("TOPPADDING", (0, 0), (-1, -1), 7),
- ("BOTTOMPADDING", (0, 0), (-1, -1), 7),
+ ("LEFTPADDING", (0, 0), (-1, -1), 9), ("RIGHTPADDING", (0, 0), (-1, -1), 9),
+ ("TOPPADDING", (0, 0), (-1, -1), 8), ("BOTTOMPADDING", (0, 0), (-1, -1), 8),
]))
- return table
+ return t
-def module_card(number: str, title: str, text: str, background, st: dict[str, ParagraphStyle]) -> Table:
- cell = [
- rich(escape(number), st["label"]),
- Spacer(1, 9),
- rich(escape(title), st["card_title"]),
- Spacer(1, 5),
- p(text, st["card_text"]),
- ]
- table = Table([[cell]], colWidths=[2.36 * inch])
- table.setStyle(TableStyle([
- ("BACKGROUND", (0, 0), (-1, -1), background),
- ("BOX", (0, 0), (-1, -1), 0.45, RULE),
+def two_column_copy(left_label: str, left_text: str, right_label: str, right_text: str, st: dict[str, ParagraphStyle]) -> Table:
+ left = [markup(escape(left_label.upper()), st["label_blue"]), Spacer(1, 6), plain(left_text, st["body"])]
+ right = [markup(escape(right_label.upper()), st["label"]), Spacer(1, 6), plain(right_text, st["body"])]
+ t = Table([[left, right]], colWidths=[3.65 * inch, 3.70 * inch])
+ t.setStyle(TableStyle([
+ ("LINEBEFORE", (1, 0), (1, 0), 0.7, RULE),
("VALIGN", (0, 0), (-1, -1), "TOP"),
- ("LEFTPADDING", (0, 0), (-1, -1), 10),
- ("RIGHTPADDING", (0, 0), (-1, -1), 10),
- ("TOPPADDING", (0, 0), (-1, -1), 10),
- ("BOTTOMPADDING", (0, 0), (-1, -1), 11),
+ ("LEFTPADDING", (0, 0), (0, 0), 0), ("RIGHTPADDING", (0, 0), (0, 0), 14),
+ ("LEFTPADDING", (1, 0), (1, 0), 14), ("RIGHTPADDING", (1, 0), (1, 0), 0),
+ ("TOPPADDING", (0, 0), (-1, -1), 0), ("BOTTOMPADDING", (0, 0), (-1, -1), 0),
]))
- return table
+ return t
-def fit_table(profile: dict, st: dict[str, ParagraphStyle]) -> Table:
- data = []
- for label, text, tag in profile["fit_rows"]:
- tag_style = st["label_gold"] if tag == "PRIMARY FIT" else st["label_blue"] if tag == "ENABLING FIT" else st["label"]
- data.append([rich(f"{escape(label)}
{escape(tag)}", tag_style), p(text, st["body_small"])])
- table = Table(data, colWidths=[1.62 * inch, 5.58 * inch])
- table.setStyle(TableStyle([
- ("BACKGROUND", (0, 0), (0, -1), PALE_GREEN),
- ("GRID", (0, 0), (-1, -1), 0.4, RULE),
+def system_table(st: dict[str, ParagraphStyle]) -> Table:
+ rows = [
+ [markup("CONTEXT
Before action", st["module_title"]), plain("Resolves repository, ticket, deployment, and decision state into bounded context before an agent uses it.", st["body_small"])],
+ [markup("MEMORY
Across sessions", st["module_title"]), plain("Retains governed, bitemporal memory with durable journaling and explicit authority boundaries.", st["body_small"])],
+ [markup("EVIDENCE
After action", st["module_title"]), plain("Links actions and decisions to evidence, authority, and time so a reviewer can reconstruct what happened.", st["body_small"])],
+ ]
+ t = Table(rows, colWidths=[1.85 * inch, 5.50 * inch])
+ t.setStyle(TableStyle([
+ ("BACKGROUND", (0, 0), (-1, -1), PALE),
+ ("LINEABOVE", (0, 0), (-1, 0), 0.55, RULE),
+ ("LINEBELOW", (0, -1), (-1, -1), 0.55, RULE),
+ ("LINEBELOW", (0, 0), (-1, -2), 0.35, RULE),
("VALIGN", (0, 0), (-1, -1), "TOP"),
- ("LEFTPADDING", (0, 0), (-1, -1), 8),
- ("RIGHTPADDING", (0, 0), (-1, -1), 8),
- ("TOPPADDING", (0, 0), (-1, -1), 7),
- ("BOTTOMPADDING", (0, 0), (-1, -1), 7),
+ ("LEFTPADDING", (0, 0), (-1, -1), 9), ("RIGHTPADDING", (0, 0), (-1, -1), 9),
+ ("TOPPADDING", (0, 0), (-1, -1), 8), ("BOTTOMPADDING", (0, 0), (-1, -1), 8),
]))
- return table
+ return t
-def metric_card(value: str, label: str, detail: str, st: dict[str, ParagraphStyle]) -> Table:
- cell = [rich(escape(value), st["metric_value"]), Spacer(1, 5), rich(escape(label), st["metric_label"]), Spacer(1, 4), p(detail, st["metric_detail"])]
- table = Table([[cell]], colWidths=[3.54 * inch])
- table.setStyle(TableStyle([
- ("BACKGROUND", (0, 0), (-1, -1), PALE_GREEN),
- ("BOX", (0, 0), (-1, -1), 0.5, RULE),
+def fit_table(profile: dict, st: dict[str, ParagraphStyle]) -> Table:
+ data = [[markup("ROUTE", st["label_muted"]), markup("USE", st["label_muted"]), markup("ROLE", st["label_muted"])]]
+ for label, text, tag in profile["fit_rows"]:
+ role = {"PRIMARY FIT": "Direct fit", "ENABLING FIT": "Enabling fit", "PARTNER-LED": "Partner-led"}.get(tag, tag.title())
+ data.append([markup(f"{escape(label)}", st["body_small"]), plain(text, st["body_small"]), markup(escape(role), st["label"])])
+ t = Table(data, colWidths=[1.62 * inch, 4.53 * inch, 1.20 * inch])
+ t.setStyle(TableStyle([
+ ("BACKGROUND", (0, 0), (-1, 0), PALE_BLUE),
+ ("LINEABOVE", (0, 0), (-1, 0), 0.55, RULE),
+ ("LINEBELOW", (0, -1), (-1, -1), 0.55, RULE),
+ ("LINEBELOW", (0, 1), (-1, -2), 0.35, RULE),
("VALIGN", (0, 0), (-1, -1), "TOP"),
- ("LEFTPADDING", (0, 0), (-1, -1), 11),
- ("RIGHTPADDING", (0, 0), (-1, -1), 11),
- ("TOPPADDING", (0, 0), (-1, -1), 11),
- ("BOTTOMPADDING", (0, 0), (-1, -1), 11),
+ ("LEFTPADDING", (0, 0), (-1, -1), 8), ("RIGHTPADDING", (0, 0), (-1, -1), 8),
+ ("TOPPADDING", (0, 0), (-1, -1), 7), ("BOTTOMPADDING", (0, 0), (-1, -1), 7),
]))
- return table
+ return t
-def fact_block(title: str, rows: list[tuple[str, str]], background, st: dict[str, ParagraphStyle]) -> Table:
- body = [rich(escape(title.upper()), st["eyebrow"])]
- for label, value in rows:
- body.extend([rich(f"{escape(label)}
{escape(value)}", st["body_small"]), Spacer(1, 5)])
- table = Table([[body]], colWidths=[3.54 * inch])
- table.setStyle(TableStyle([
- ("BACKGROUND", (0, 0), (-1, -1), background),
- ("BOX", (0, 0), (-1, -1), 0.5, RULE),
+def evidence_table(claims: dict, st: dict[str, ParagraphStyle]) -> Table:
+ rows = [[markup("MEASURE", st["label_muted"]), markup("RESULT", st["label_muted"]), markup("WHAT IT SHOWS", st["label_muted"]), markup("SCOPE", st["label_muted"])]]
+ values = [
+ ("LongMemEval QA", claims["longmemeval_cot"]["value"], "Answer quality when the agent receives the official context-of-thought protocol.", "Official-CoT mean · 3 signed runs"),
+ ("Session retrieval", claims["longmemeval_retrieval_recall10"]["value"], "Relevant session memories remain available to the later task.", "Retrieval-only · recall@10"),
+ ("BEAM correctness", claims["beam_correctness"]["value"], "The deterministic gauntlet stays correct across token tiers.", "128K–10M token tiers"),
+ ("Durable write", claims["vault_durable_write_100k"]["value"], "Sustained write behavior at a 100K-entity scale.", "Signed report · not bulk insert"),
+ ]
+ for name, value, meaning, scope in values:
+ rows.append([markup(f"{escape(name)}", st["metric_label"]), markup(escape(value), st["metric_value"]), plain(meaning, st["body_small"]), plain(scope, st["metric_detail"])])
+ t = Table(rows, colWidths=[1.45 * inch, .82 * inch, 3.12 * inch, 1.96 * inch])
+ t.setStyle(TableStyle([
+ ("BACKGROUND", (0, 0), (-1, 0), PALE_BLUE),
+ ("LINEABOVE", (0, 0), (-1, 0), 0.55, RULE),
+ ("LINEBELOW", (0, -1), (-1, -1), 0.55, RULE),
+ ("LINEBELOW", (0, 1), (-1, -2), 0.35, RULE),
+ ("VALIGN", (0, 0), (-1, -1), "MIDDLE"),
+ ("LEFTPADDING", (0, 0), (-1, -1), 7), ("RIGHTPADDING", (0, 0), (-1, -1), 7),
+ ("TOPPADDING", (0, 0), (-1, -1), 8), ("BOTTOMPADDING", (0, 0), (-1, -1), 8),
+ ]))
+ return t
+
+
+def flat_fact_table(title: str, rows: list[tuple[str, str]], st: dict[str, ParagraphStyle]) -> Table:
+ data = [[markup(escape(title.upper()), st["eyebrow_blue"]), ""]]
+ data.extend([[markup(f"{escape(k)}", st["body_small"]), plain(v, st["body_small"])] for k, v in rows])
+ t = Table(data, colWidths=[1.18 * inch, 2.50 * inch])
+ t.setStyle(TableStyle([
+ ("SPAN", (0, 0), (1, 0)),
+ ("LINEABOVE", (0, 0), (-1, 0), 0.55, RULE),
+ ("LINEBELOW", (0, -1), (-1, -1), 0.55, RULE),
+ ("LINEBELOW", (0, 1), (-1, -2), 0.35, RULE),
("VALIGN", (0, 0), (-1, -1), "TOP"),
- ("LEFTPADDING", (0, 0), (-1, -1), 11),
- ("RIGHTPADDING", (0, 0), (-1, -1), 11),
- ("TOPPADDING", (0, 0), (-1, -1), 11),
- ("BOTTOMPADDING", (0, 0), (-1, -1), 7),
+ ("LEFTPADDING", (0, 0), (-1, -1), 0), ("RIGHTPADDING", (0, 0), (-1, -1), 8),
+ ("TOPPADDING", (0, 0), (-1, -1), 6), ("BOTTOMPADDING", (0, 0), (-1, -1), 6),
]))
- return table
+ return t
-def page_chrome(canvas, doc) -> None:
+def footer(canvas, doc) -> None:
canvas.saveState()
canvas.setStrokeColor(RULE)
- canvas.setLineWidth(0.45)
- canvas.line(doc.leftMargin, 0.34 * inch, PAGE_W - doc.rightMargin, 0.34 * inch)
+ canvas.setLineWidth(.45)
+ canvas.line(doc.leftMargin, .32 * inch, PAGE_W - doc.rightMargin, .32 * inch)
canvas.setFillColor(FAINT)
- canvas.setFont("Helvetica", 6.7)
- canvas.drawString(doc.leftMargin, 0.20 * inch, "Perseus Computing LLC · perseus.observer · perseus@perseus.observer")
- canvas.drawRightString(PAGE_W - doc.rightMargin, 0.20 * inch, f"{doc.page} / 2")
+ canvas.setFont("Helvetica", 6.6)
+ canvas.drawString(doc.leftMargin, .18 * inch, "Perseus Computing LLC · perseus.observer · perseus@perseus.observer")
+ canvas.drawRightString(PAGE_W - doc.rightMargin, .18 * inch, f"{doc.page} / 2")
canvas.restoreState()
-def build(profile_name: str, profile: dict, claims: dict) -> Path:
- st = make_styles()
- output = OUTPUT_DIR / profile["filename"]
- output.parent.mkdir(parents=True, exist_ok=True)
- doc = BaseDocTemplate(
- str(output),
- pagesize=letter,
- leftMargin=0.56 * inch,
- rightMargin=0.56 * inch,
- topMargin=0.42 * inch,
- bottomMargin=0.52 * inch,
- title=f"Perseus Computing LLC — {profile['audience_label']}",
- author="Perseus Computing LLC",
- subject="Capability statement",
- )
- frame = Frame(doc.leftMargin, doc.bottomMargin, doc.width, doc.height, id="capability")
- doc.addPageTemplates([PageTemplate(id="capability", frames=[frame], onPage=page_chrome)])
-
- c = claims
+def build(name: str, profile: dict, claims: dict) -> Path:
+ st = styles()
+ OUT.mkdir(parents=True, exist_ok=True)
+ path = OUT / profile["filename"]
+ doc = BaseDocTemplate(str(path), pagesize=letter, leftMargin=.60*inch, rightMargin=.60*inch, topMargin=.42*inch, bottomMargin=.50*inch, title="Perseus Computing Defense Capability Brief", author="Perseus Computing LLC")
+ frame = Frame(doc.leftMargin, doc.bottomMargin, doc.width, doc.height, id="brief")
+ doc.addPageTemplates([PageTemplate(id="brief", frames=[frame], onPage=footer)])
story: list = []
- # PAGE 1: orient the reader before listing proof.
- story.append(header(st, profile["audience_label"]))
- story.append(Spacer(1, 13))
- story.append(rich("CAPABILITY STATEMENT", st["eyebrow"]))
- hero_title_style = st["hero_title_compact"] if len(profile["headline"]) > 62 else st["hero_title"]
- hero = [
- rich(escape(profile["headline"]), hero_title_style),
- p(profile["lead"], st["lead"]),
- Spacer(1, 8),
- rich("UEI PJS2LW7HAK35 CAGE 22JC5 SAM Active HQ Austin, Texas", st["identity"]),
- ]
- hero_table = Table([[hero, at_a_glance(profile, st)]], colWidths=[4.25 * inch, 3.10 * inch])
- hero_table.setStyle(TableStyle([
- ("VALIGN", (0, 0), (-1, -1), "TOP"),
- ("LEFTPADDING", (0, 0), (-1, -1), 0),
- ("RIGHTPADDING", (0, 0), (0, 0), 13),
- ("RIGHTPADDING", (1, 0), (1, 0), 0),
- ("TOPPADDING", (0, 0), (-1, -1), 0),
- ("BOTTOMPADDING", (0, 0), (-1, -1), 0),
- ]))
- story.append(hero_table)
- story.append(Spacer(1, 16))
-
- story.extend(section_heading("The problem we solve", st))
- problem = Table([[
- p(profile["problem"], st["body"]),
- rich(f"WHAT CHANGES
{escape(profile['change'])}", st["callout"]),
- ]], colWidths=[4.25 * inch, 3.10 * inch])
- problem.setStyle(TableStyle([
- ("BACKGROUND", (1, 0), (1, 0), PALE_GOLD),
- ("BOX", (1, 0), (1, 0), 0.5, HexColor("#E5C58C")),
- ("VALIGN", (0, 0), (-1, -1), "TOP"),
- ("LEFTPADDING", (0, 0), (0, 0), 0),
- ("RIGHTPADDING", (0, 0), (0, 0), 13),
- ("LEFTPADDING", (1, 0), (1, 0), 11),
- ("RIGHTPADDING", (1, 0), (1, 0), 11),
- ("TOPPADDING", (0, 0), (-1, -1), 10),
- ("BOTTOMPADDING", (0, 0), (-1, -1), 10),
- ]))
- story.append(problem)
- story.append(Spacer(1, 16))
-
- story.extend(section_heading("The Perseus system", st))
- modules = Table([[
- module_card("01 / CONTEXT", "Before the agent acts", "Resolves repository, ticket, deployment, and decision state into bounded context before a model uses it.", PALE_BLUE, st),
- module_card("02 / MEMORY", "After the session ends", "Vault retains encrypted, bitemporal memory with durable journaling and explicit authority boundaries.", PALE_GREEN, st),
- module_card("03 / EVIDENCE", "When the work is reviewed", "Ledger links actions and decisions to evidence, authority, and time instead of leaving the record in an opaque dashboard.", PALE_GOLD, st),
- ]], colWidths=[2.36 * inch, 2.36 * inch, 2.36 * inch])
- modules.setStyle(TableStyle([
- ("VALIGN", (0, 0), (-1, -1), "TOP"),
- ("LEFTPADDING", (0, 0), (-1, -1), 0),
- ("RIGHTPADDING", (0, 0), (0, 0), 7),
- ("RIGHTPADDING", (1, 0), (1, 0), 7),
- ("RIGHTPADDING", (2, 0), (2, 0), 0),
- ("TOPPADDING", (0, 0), (-1, -1), 0),
- ("BOTTOMPADDING", (0, 0), (-1, -1), 0),
- ]))
- story.append(modules)
- story.append(Spacer(1, 16))
-
- story.extend(section_heading("Where this fits", st))
- story.append(fit_table(profile, st))
- story.append(Spacer(1, 15))
- first = Table([[rich(f"FIRST CONVERSATION {escape(profile['discussion'])}", st["callout"])]], colWidths=[7.35 * inch])
- first.setStyle(TableStyle([
- ("BACKGROUND", (0, 0), (-1, -1), NAVY),
- ("TEXTCOLOR", (0, 0), (-1, -1), WHITE),
- ("BOX", (0, 0), (-1, -1), 0.5, NAVY),
- ("LEFTPADDING", (0, 0), (-1, -1), 11),
- ("RIGHTPADDING", (0, 0), (-1, -1), 11),
- ("TOPPADDING", (0, 0), (-1, -1), 9),
- ("BOTTOMPADDING", (0, 0), (-1, -1), 9),
- ]))
- story.append(first)
-
- # PAGE 2: evidence and procurement details with more room to breathe.
- story.append(PageBreak())
- story.append(header(st, "Evidence and procurement"))
- story.append(Spacer(1, 14))
- story.append(rich("EVIDENCE AND PROCUREMENT", st["eyebrow"]))
- story.append(rich("Proof first. Claims stay attached to their method.", st["hero_title_compact"]))
- story.append(p("The figures below are drawn from the public claims registry. They are presented with the measurement family and condition that give each number meaning.", st["lead"]))
- story.append(Spacer(1, 16))
-
- story.extend(section_heading("Measured evidence", st))
- metrics = [
- metric_card(c["longmemeval_cot"]["value"], "LongMemEval QA", "Official-CoT mean of three signed runs.", st),
- metric_card(c["longmemeval_retrieval_recall10"]["value"], "Session retrieval recall@10", "Retrieval-only session-level result.", st),
- metric_card(c["beam_correctness"]["value"], "BEAM correctness", "Every 128K–10M token tier; deterministic gauntlet.", st),
- metric_card(c["vault_durable_write_100k"]["value"], "Durable sustained write", "Signed scale report at 100K entities; not an in-memory insert rate.", st),
- ]
- metric_grid = Table([[metrics[0], metrics[1]], [metrics[2], metrics[3]]], colWidths=[3.68 * inch, 3.68 * inch])
- metric_grid.setStyle(TableStyle([
- ("VALIGN", (0, 0), (-1, -1), "TOP"),
- ("LEFTPADDING", (0, 0), (0, -1), 0),
- ("RIGHTPADDING", (0, 0), (0, -1), 7),
- ("LEFTPADDING", (1, 0), (1, -1), 0),
- ("RIGHTPADDING", (1, 0), (1, -1), 0),
- ("TOPPADDING", (0, 0), (-1, -1), 0),
- ("BOTTOMPADDING", (0, 0), (-1, 0), 10),
- ("BOTTOMPADDING", (0, 1), (-1, 1), 0),
- ]))
- story.append(metric_grid)
- story.append(Spacer(1, 7))
- story.append(p("Measured on named hardware with signed or committed reports and rerunnable methods. Methodology variants remain separately labeled. No customer ROI, customer cost savings, or compliance certification is implied by these figures.", st["body_tiny"]))
- story.append(Spacer(1, 17))
-
- story.extend(section_heading("Procurement facts", st))
- facts = Table([[
- fact_block("Company", [
- ("Legal name", "Perseus Computing LLC"),
- ("Business", "U.S. small business · technical access"),
- ("UEI / CAGE", "PJS2LW7HAK35 / 22JC5"),
- ("NAICS", "541715 · 541511 · 541512"),
- ("SAM.gov", "Active — All Awards"),
- ], PALE_BLUE, st),
- fact_block("Security and deployment", [
- ("Boundary", "On-premises, air-gapped, private VPC, or controlled network"),
- ("Readiness", "SPRS 110/110 · CMMC Level 2 final self-assessment, enclave scope"),
- ("Software", "MIT license · published SBOM · NIST AI RMF-aligned architecture"),
- ("Data posture", "No required cloud service, API key, or vendor runtime"),
- ("Integration", "Partner-led where mission hardware or sensors are involved"),
- ], PALE_GREEN, st),
- ]], colWidths=[3.68 * inch, 3.68 * inch])
- facts.setStyle(TableStyle([
- ("VALIGN", (0, 0), (-1, -1), "TOP"),
- ("LEFTPADDING", (0, 0), (0, 0), 0),
- ("RIGHTPADDING", (0, 0), (0, 0), 7),
- ("LEFTPADDING", (1, 0), (1, 0), 0),
- ("RIGHTPADDING", (1, 0), (1, 0), 0),
- ("TOPPADDING", (0, 0), (-1, -1), 0),
- ("BOTTOMPADDING", (0, 0), (-1, -1), 0),
- ]))
- story.append(facts)
- story.append(Spacer(1, 17))
-
- display_label = {
- "MASTER CAPABILITY STATEMENT": "Master",
- "CYBER & NETWORKS": "Cyber & Networks",
- "C3BM": "C3BM",
- "ELECTRONIC SYSTEMS": "Electronic Systems",
- }[profile["audience_label"]]
- story.append(Spacer(1, 12))
- boundary = Table([[
- rich("DEPLOYMENT BOUNDARY
Run the context, memory, and evidence layers where the program keeps its working data. Air-gapped, on-premises, private VPC, and controlled-network deployment are supported postures.", st["body_tiny"]),
- rich("CONTACT
perseus@perseus.observer", st["body_tiny"]),
- ]], colWidths=[4.72 * inch, 2.63 * inch])
- boundary.setStyle(TableStyle([
- ("BACKGROUND", (0, 0), (0, 0), PALE_BLUE),
- ("BACKGROUND", (1, 0), (1, 0), PALE_GREEN),
- ("BOX", (0, 0), (-1, -1), 0.5, RULE),
- ("INNERGRID", (0, 0), (-1, -1), 0.35, RULE),
- ("VALIGN", (0, 0), (-1, -1), "TOP"),
- ("LEFTPADDING", (0, 0), (-1, -1), 8),
- ("RIGHTPADDING", (0, 0), (-1, -1), 8),
- ("TOPPADDING", (0, 0), (-1, -1), 7),
- ("BOTTOMPADDING", (0, 0), (-1, -1), 7),
- ]))
- story.append(boundary)
- story.append(Spacer(1, 5))
- story.append(rich(f"Updated {escape(str(c['_meta']['updated']))} · {escape(display_label)} version · Source-linked public claims", st["footer"]))
-
+ # Page 1: orientation and fit.
+ story += [header("Mission fit", st), Spacer(1, 14), markup("PERSEUS COMPUTING LLC", st["eyebrow"])]
+ headline = "Infrastructure for AI agents in controlled environments." if name == "master" else profile["headline"]
+ story += [markup(escape(headline), st["title"] if len(headline) < 60 else st["title_compact"]), plain(profile["lead"], st["lead"]), Spacer(1, 12), info_band(profile, st), Spacer(1, 13)]
+ story += rule_section("The useful difference", st)
+ story += [two_column_copy("The problem", profile["problem"], "The layer", profile["change"], st), Spacer(1, 12)]
+ story += rule_section("What Perseus provides", st) + [system_table(st), Spacer(1, 12)]
+ story += rule_section("Where it fits", st) + [fit_table(profile, st), Spacer(1, 8)]
+ call = Table([[markup(f"FIRST CONVERSATION {escape(profile['discussion'])}", st["callout"])]], colWidths=[7.35*inch])
+ call.setStyle(TableStyle([("BACKGROUND", (0, 0), (-1, -1), NAVY), ("LEFTPADDING", (0, 0), (-1, -1), 10), ("RIGHTPADDING", (0, 0), (-1, -1), 10), ("TOPPADDING", (0, 0), (-1, -1), 9), ("BOTTOMPADDING", (0, 0), (-1, -1), 9)]))
+ story.append(call)
+
+ # Page 2: evidence and procurement without unequal boxes.
+ story += [PageBreak(), header("Evidence and procurement", st), Spacer(1, 14), markup("EVIDENCE AND PROCUREMENT", st["eyebrow"]), markup("Proof with the condition attached.", st["title_compact"]), plain("The figures below are kept separate by measurement family so a reviewer can see what each result does—and does not—establish.", st["lead"]), Spacer(1, 16)]
+ story += rule_section("Measured evidence", st) + [evidence_table(claims, st), Spacer(1, 7), plain("Measured on named hardware with signed or committed reports and rerunnable methods. No customer ROI, customer cost savings, or compliance certification is implied by these figures.", st["body_tiny"]), Spacer(1, 18)]
+ story += rule_section("Procurement and deployment", st)
+ left = flat_fact_table("Company", [("Legal name", "Perseus Computing LLC"), ("Business", "U.S. small business · technical access"), ("UEI / CAGE", "PJS2LW7HAK35 / 22JC5"), ("NAICS", "541715 · 541511 · 541512"), ("SAM.gov", "Active — All Awards")], st)
+ right = flat_fact_table("Security and boundary", [("Deployment", "On-premises, air-gapped, private VPC, or controlled network"), ("Readiness", "SPRS 110/110 · CMMC Level 2 self-assessment, enclave scope"), ("Software", "MIT license · published SBOM"), ("Data posture", "No required cloud service, API key, or vendor runtime"), ("Integration", "Partner-led where mission hardware or sensors are involved")], st)
+ facts = Table([[left, right]], colWidths=[3.68*inch, 3.67*inch])
+ facts.setStyle(TableStyle([("VALIGN", (0, 0), (-1, -1), "TOP"), ("LINEBEFORE", (1, 0), (1, 0), .7, RULE), ("LEFTPADDING", (0, 0), (0, 0), 0), ("RIGHTPADDING", (0, 0), (0, 0), 14), ("LEFTPADDING", (1, 0), (1, 0), 14), ("RIGHTPADDING", (1, 0), (1, 0), 0), ("TOPPADDING", (0, 0), (-1, -1), 0), ("BOTTOMPADDING", (0, 0), (-1, -1), 0)]))
+ story += [facts, Spacer(1, 17)]
+ story += rule_section("Scope in one sentence", st)
+ story += [plain("Perseus is the infrastructure around the model: context before action, governed memory across sessions, and evidence after action. It is not a claim to replace a mission platform, prime integrator, or sensor system.", st["body"]), Spacer(1, 14)]
+ contact = Table([[markup("CONTACT perseus@perseus.observer · perseus.observer", st["body_small"]), markup("UPDATED " + escape(str(claims["_meta"]["updated"])), st["body_small"])]], colWidths=[5.75*inch, 1.60*inch])
+ contact.setStyle(TableStyle([("BACKGROUND", (0, 0), (-1, -1), PALE_BLUE), ("LINEABOVE", (0, 0), (-1, 0), .55, RULE), ("LINEBELOW", (0, 0), (-1, 0), .55, RULE), ("VALIGN", (0, 0), (-1, -1), "MIDDLE"), ("LEFTPADDING", (0, 0), (-1, -1), 9), ("RIGHTPADDING", (0, 0), (-1, -1), 9), ("TOPPADDING", (0, 0), (-1, -1), 8), ("BOTTOMPADDING", (0, 0), (-1, -1), 8)]))
+ story.append(contact)
doc.build(story)
- print(f"wrote {output}")
- return output
+ return path
def main() -> None:
parser = argparse.ArgumentParser()
- parser.add_argument("--profile", choices=["master", "cyber-networks", "c3bm", "electronic-systems"], default="master")
- parser.add_argument("--all", action="store_true", help="build the master and all tailored variants")
+ parser.add_argument("--all", action="store_true")
+ parser.add_argument("--profile", default="master")
args = parser.parse_args()
registry = json.loads((ROOT / "claims.json").read_text(encoding="utf-8"))
profiles = json.loads(PROFILES.read_text(encoding="utf-8"))
- selected = list(profiles) if args.all else [args.profile]
- for name in selected:
- build(name, profiles[name], registry["claims"] | {"_meta": registry["_meta"]})
+ names = list(profiles) if args.all else [args.profile]
+ for name in names:
+ print(build(name, profiles[name], registry["claims"] | {"_meta": registry["_meta"]}))
if __name__ == "__main__":