Files
digital-me-history/digital-me-backend/src/chao/xin.js
T
admin 0593ff7e62
nginx serve /uploads direct (audio speed) / patch-nginx (push) Failing after 1m34s
数字我 Digital Me:全量入库(大文件走 Git LFS)
2026-10-10 16:24:43 +08:00

1870 lines
138 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 新 —— 帝纪表。王莽一朝,公元 9–23。
//
// 定位:纯常量表。不 import 引擎,无 IO、无 DB、无 LLM。接线由别人做,本文件只管【事实】。
//
// ══════════════════════════════════════════════════════════════════════════
// 【这一朝特有的坑,也是这一朝唯一值钱的东西】
//
// ★★★ 新朝在《漢書》里【没有本紀】。它是「卷九十九 王莽傳第六十九」,上/中/下三卷。
// ——同一套书里,惠帝、文帝、景帝、武帝,人人有【紀】;王莽做了十五年天子,只有【傳】。
//
// 别把这句话轻轻放过。本项目所有别的朝代,抠的是「本纪」;到了新,【没有本纪可抠】。
// 那不是史料缺失,那是【裁决】。班固用编排本身下了判词:紀是天子的体例,傳是臣子的体例,
// 把王莽放进傳,等于说「他不是天子,他是元后的侄子,是外戚,是臣」。
//
// ★★ 而且班固不止是【摆位置】,他把这个裁决【写成了理论】。卷九十九下赞曰(两证逐字相同):
// 「紫色麴聲,餘分閏位,聖王之驅除云爾!」
// ——「閏位」。闰。像闰月一样:那段时间【真的过去了】,但它不算在正统的序列里,
// 它是历法上多出来的零头(「餘分」)。班固给了新朝一个精确的本体论地位:
// 【真实发生过,但不占位】。
//
// ★★★ 所以「朝」的边界是谁划的?
// 不是时间划的 —— 这十五年一天不少,年号改了三次,玺绶、正朔、服色、官制全换过。
// 是【后一个朝的史官】划的。班固是东汉的兰台令史,他修的《漢書》,
// 而东汉的合法性恰恰建立在「新不是朝、光武是【中兴】不是【开国】」之上。
// 如果新是一个朝,光武就是另立新朝的开国之君,跟刘邦并列;
// 如果新是「闰位」,光武就是把断掉的汉接回去的中兴之主,汉统从未中断。
// ——「聖王之驅除」四个字把话说尽了:王莽的全部历史功能,是替聖王(光武)扫地。
//
// ★ 这条对本产品是【正题不是花絮】。产品内核是「分身是史官,传主是你」。
// 新朝就是那个把史官的权力赤裸裸摊开的样本:同样的十五年,
// 写成「紀」是一个朝,写成「傳」是一场篡窃。你在哪一朝、爬到哪一格,是制度说了算;
// 而那一格【将来算不算数】,是【写的人】说了算。
// ⚠ 本表照《漢書》的原文记事实,【不替读者裁】新算不算一个朝。把裁决权留在外面。
//
// ── 本表的立场,说白 ──
// 本表把王莽列为 EMPERORS,是因为原文写着「即真天子位,定有天下之號曰新」(他自己称帝、
// 建了国号),【不是】因为本表认定班固判错了。班固的判词原样记在 BANGU_VERDICT 里。
// 这两件事必须【同时】在表里,谁也不许吃掉谁。
//
// ══════════════════════════════════════════════════════════════════════════
// 【史源与见证】2026-07-17
//
// 见证 A:zh.wikisource.org/wiki/漢書/卷099上、卷099中、卷099下 ?action=raw
// 见证 B:ctext.org/han-shu/wang-mang-zhuan-shang(-zhong / -xia)/zh
// · 全程 curl -sk 取生 HTML / wikitext,自己剥标签断句,【未用 WebFetch】(它会让小模型转述,
// 本项目历史上多次抓到它伪造引文)。
// · ★ 已先剥 `-{ }-` 转换标记再检索(它会插在词中间)。
// · 本表所有 cite / 年号 / 纪年锚点,两证【逐字相同】。
//
// ⚠⚠ 两个见证【都不含注】:師古曰 在 A、B 两侧命中均为 0。
// → 所以本表【没有核过顏師古注】。这是「本轮未核」,【不是】「本传无注」。
// ★ 不许把它写成「顏師古無注」——那是拿零命中当结论,本项目已在这上头栽过。
// 要动「建國/始建國」那条异文,必须先目验中华书局点校本的顏注。
//
// ⚠ A 的章节标题(==始建國== ==天鳳== ==地皇== ==更始元年== ==【贊】==)是
// wikisource【编者加的】,不是《漢書》原文的结构。B 里一个都没有。本表不采信它们。
// 同理 A 的 {{YL|始建國元年}} 是编者的公元换算浮标 —— 但★ 模板【括住的那几个字】是原文
// (已用 B 逐条验证:B 正文确有「始建國元年正月朔」「天鳳元年正月,赦天下」
// 「地皇元年正月乙未,赦天下」)。剥模板时差点把它误判成编者字,记在这里防后人重踩。
//
// ══════════════════════════════════════════════════════════════════════════
export const CHAO = Object.freeze({
id: 'xin',
name: '新',
from: 9,
to: 23,
juan: '《漢書》卷九十九·王莽傳第六十九(上/中/下)',
// ★ 全书唯一一个「朝」的史料载体是【傳】不是【紀】的。见顶部注释。
benjiExists: false,
benjiNote:
'《漢書》无新朝本紀。王莽事在卷九十九【王莽傳】上中下三卷。班固以体例判其非天子 —— ' +
'这本身是史料,不是史料缺失。',
});
// ── 班固的判词。原样记,不改一字,不替他辩护也不替他定罪。 ──
export const BANGU_VERDICT = Object.freeze({
juan: '《漢書》卷九十九下·王莽傳第六十九下',
quote: '紫色麴聲,餘分閏位,聖王之驅除云爾!',
witnesses: 2,
gloss:
'「閏位」=如闰月之位:时间真实流过,但不列入正统序列,是历法多出来的零头(餘分)。' +
'「聖王之驅除」=王莽的全部功能是替聖王(光武)扫清道路。',
// ⚠ 上面 gloss 是【本表的转述】,不是原文,也不是任何一家的注。要引用请引 quote。
quoteConfidence: '两证逐字相同',
glossConfidence: '本表转述,未据注',
});
// ══════════════════════════════════════════════════════════════════════════
// 【皇帝】共 1 位。
//
// ★ 我数了原文,不是信估数:卷九十九上中下通篇只有王莽一人称帝。王莽立过皇太子(王臨、王安
// 等先后废死),【无一人即位】;地皇四年十月莽死,长安即入更始(劉玄)之手,新亡,无嗣君。
// 所以新朝皇帝数 = 1,且是【原文数出来的 1】,不是抄来的 1。
// ══════════════════════════════════════════════════════════════════════════
export const EMPERORS = Object.freeze([
Object.freeze({
miao: null, // ★ 无廟號。莽死后身首异处,无人为其立廟 —— 新亡而汉复,不可能有。
shi: null, // ★ 无諡號。同上。
// ⚠ miao/shi 为 null 的依据是【通篇无之】,属零命中。但此处零命中是安全的:
// 廟號/諡號须由后继政权追上,而灭他的更始与东汉均以他为「反虜」(原文:
// 「反虜王莽安在?」「反虜王莽,何不出降?」),追諡在制度上不可能。
// ——这条推论写在这里,是让后人能【复核推论本身】,不是让人当原文引。
shiNote: '无諡無廟。原文两处称其「反虜」,首传更始,縣(懸)于宛市。',
xing: '王莽',
zi: '巨君',
xingCite: '王莽字巨君,孝元皇后之弟子也。', // 卷99上 开篇,两证逐字同
li: 9, // ★ 见 LI_CAVEAT —— 这个 9 是有争议的,别当无争议的数用
beng: 23,
nianhao: Object.freeze([
Object.freeze({
hao: '始建國',
qi: 9,
zhi: 13,
count: 5,
// 原文纪年锚点(两证):始建國元年正月朔 / 二年二月 / 三年 / 四年二月 / 五年二月
// 然后「明年改元曰天鳳」→ 故 始建國 止于五年 = 13。
cite: '始建國元年正月朔,莽帥公侯卿士奉皇太后璽韍,上太皇太后,順符命,去漢號焉。',
juan: '《漢書》卷九十九中',
variant: '建國',
variantCite: '以十二月朔癸酉為建國元年正月之朔。',
variantJuan: '《漢書》卷九十九上',
// ★★ 异文,两证【都】如此,不是转录错:
// 即位詔里莽自己写的是「【建國】元年」(无「始」字),
// 而叙事通篇作「【始建國】元年」。本表 hao 取【始建國】(行用之名),
// variant 记詔書之名。⚠【一个字都没替读者选】—— 未核顏師古注,见顶部。
variantConfidence: '需核实(两证均如此,但未核注)',
}),
Object.freeze({
hao: '天鳳',
qi: 14,
zhi: 19,
count: 6,
cite: '明年改元曰天鳳。',
juan: '《漢書》卷九十九中',
// 锚点(两证):天鳳元年正月,赦天下 / 二年二月 / 三年二月(以上卷中)
// 四年五月 / 五年正月 / 六年春(以上卷下)→ 六年而改元,故 14–19。
}),
Object.freeze({
hao: '地皇',
qi: 20,
zhi: 23,
count: 4,
cite: '明年改元曰地皇,從三萬六千歲曆號也。',
juan: '《漢書》卷九十九下',
// 锚点(两证):地皇元年正月乙未,赦天下 / 二年正月 / 三年正月 / 四年正月。
// ★ 地皇本【不该】只有四年(莽的曆是六歲一改元,且他自己诏书里算到「地皇三十年」)。
// 它止于四年,是因为【莽死了】。见 NIANHAO_NOTE.dihuangCutShort。
}),
]),
// ★ 行用过的年号【已抠全】:三个,各有改元原文 + 逐年纪年锚点,两证俱同,
// 且与原文自述的十五年、与干支自洽(见 CHRONOLOGY_CHECKS)。
// ⚠ 但「全」只限【行用过的】。莽还【预告】过未行用的年号,见 NIANHAO_NOTE.wangguangshangwu。
nianhaoComplete: true,
nianhaoCompleteNote:
'指【行用过的】年号已全(3 个)。不含莽预颁而未及行用者(王光上戊)。',
juan: '《漢書》卷九十九上·王莽傳第六十九上',
cite: '王莽字巨君,孝元皇后之弟子也。',
// ⚠ 上面这句是【傳】的开头,不是【紀】的开头 —— 因为新朝没有紀。
// 本字段名叫 cite 是为跟别朝对齐,但它取的体例跟别朝【不是一回事】。这点别被字段名骗了。
citeIsBiographyNotAnnals: true,
// 即真(称帝)原文:
accessionCite:
'以戊辰直定,御王冠,即真天子位,定有天下之號曰新。其改正朔,易服色,變犧牲,殊徽幟,異器制。',
accessionJuan: '《漢書》卷九十九上',
// 死:
bengCite: '商人杜吳殺莽,取其綬。校尉東海公賓就,故大行治禮,見吳問綬主所在。',
bengJuan: '《漢書》卷九十九下',
bengDate: '地皇四年十月三日庚戌',
bengDateCite: '十月戊申朔,兵從宣平城門入……三日庚戌,晨旦明……下餔時,眾兵上臺。',
// ⚠ 十月【戊申朔】故三日为【庚戌】,与原文自洽。
// ★ 未换算儒略历日 —— 换算须据曆表,本表【不拿现代年表替原文】,宁可不写。
bengJulian: null,
bengJulianNote: '未核。换算需曆表,本表不写未验证的公历日。',
}),
]);
// ══════════════════════════════════════════════════════════════════════════
// 【即位年为什么写 9 而不是 8】—— 这是本朝第二个真坑
// ══════════════════════════════════════════════════════════════════════════
export const LI_CAVEAT = Object.freeze({
issue: '王莽「即真天子位」在公元 8 年,而新朝元年是公元 9 年。两个都对,因为它们不是一件事。',
chain: Object.freeze([
'「以居攝三年為初始元年」——居攝三年 = 公元 8 年 = 初始元年。(卷99上,两证)',
'「戊辰,莽至高廟拜受金匱神嬗……即真天子位,定有天下之號曰新」——戊辰在初始元年十一月后,即公元 8 年末。(卷99上,两证)',
'「以十二月朔癸酉為建國元年正月之朔」——莽改正朔行【丑正】,把旧十二月定为元年正月,故元年正月朔落在公元 9 年初。(卷99上,两证)',
'「始建國元年正月朔,莽帥公侯卿士奉皇太后璽韍,上太皇太后,順符命,去漢號焉」——「去漢號」在此日。(卷99中,两证)',
]),
resolution:
'li 取 9:与原文行用的纪年(始建國元年)、与莽自述的十五年、与本表 from/to 一致。' +
'★ 但「称帝」这个动作在 8 年 —— 要用「王莽哪年称帝」这个问法,答案是 8,不是 9。',
warn: '本表【不合并】这两个年份,也不替读者选。谁要拿 li 当「称帝年」用,先读这一条。',
});
// ══════════════════════════════════════════════════════════════════════════
// 【年号:莽把年号做成了一部「曆」】—— 这一朝跟别朝最不一样的地方
// ══════════════════════════════════════════════════════════════════════════
export const NIANHAO_NOTE = Object.freeze({
// ★ 别朝的年号是【事后】因祥瑞灾异而改;莽的年号是【事先】按曆排好、颁行天下的。
liuSuiYiGaiYuan: Object.freeze({
quote: '六年春,莽見盜賊多,乃令太史推三萬六千歲曆紀,六歲一改元,布天下。',
juan: '《漢書》卷九十九下',
witnesses: 2,
gloss:
'天鳳六年(19),莽令太史推「三萬六千歲曆紀」,定【六歲一改元】,并【布天下】——' +
'即未来的改元表是预先公布的。次年即依此曆改元「地皇」(「從三萬六千歲曆號也」)。',
}),
// ★★ 未行用的年号:王光上戊。这是本表【知道但不收进 nianhao】的东西。
wangguangshangwu: Object.freeze({
quote: '其恣聽之,勿令出稅。至地皇三十年如故,是王光上戊之六年也。',
juan: '《漢書》卷九十九下',
witnesses: 2,
occurrences: 1, // 全传仅此一见(两证均仅一见,已逐证计数)
whatIsKnown:
'莽诏书以「地皇三十年」与「王光上戊之六年」互训 —— 说明莽的曆里,' +
'「王光上戊」是一个带年数的号,且其六年 = 地皇三十年。',
whatIsNotKnown:
'★ 未核:「王光上戊」究竟是(a)地皇之下的六年一改的子号,还是(b)与地皇并行的另一序列,' +
'还是(c)别的什么。仅此一条原文【判不出来】,且本轮未核注。',
whyNotInNianhao:
'因为它【从未行用】—— 莽死于地皇四年(23),地皇三十年(49)永远没有到来。' +
'收进 nianhao 会让它看起来像个真年号。',
warn: '★ 这条是「知道自己不知道」的样本。不许有人后来把它补进 nianhao 数组充数。',
}),
dihuangCutShort:
'地皇按莽自己的曆本应远不止四年(其诏书算到地皇三十年)。它只有四年,' +
'是因为地皇四年十月莽死、新亡。★ 即:本表 nianhao 里地皇的 count:4 是【被杀断的】,不是曆定的。',
});
// ══════════════════════════════════════════════════════════════════════════
// 【纪年自洽性核验】—— 全部【出自原文内部】,没有一条是拿现代年表比对出来的
// ══════════════════════════════════════════════════════════════════════════
export const CHRONOLOGY_CHECKS = Object.freeze([
Object.freeze({
name: '莽自述十五年',
quote: '予以神明聖祖黃虞遺統受命,至于地皇四年為十五年。',
juan: '《漢書》卷九十九下(地皇三年二月霸橋災诏)',
witnesses: 2,
check: '受命(9) 至 地皇四年(23),含首尾 = 15 年。与本表 from:9 / to:23 相符。',
passes: true,
}),
Object.freeze({
name: '干支锚:天鳳七年=倉龍庚辰',
quote: '更以天鳳七年,歲在大梁,倉龍庚辰,行巡狩之禮。厥明年,歲在實沈,倉龍辛巳,即土之中雒陽之都。',
juan: '《漢書》卷九十九中(天鳳元年)',
witnesses: 2,
check:
'★ 这条是最漂亮的一条:天鳳元年时,莽预告将于「天鳳七年」巡狩,并注明该年干支为【庚辰】。' +
'庚辰 = 公元 20 年(甲子=公元 4 年,庚辰为六十甲子第 17 位,4+16=20);' +
'次年【辛巳】= 21 年,亦合。故 天鳳元年 = 20−6 = 【14】。' +
'而「天鳳七年」从未存在 —— 天鳳六年后即改元地皇,地皇元年正是那个庚辰(20)。' +
'两条独立路径(改元记事 / 干支预告)指向同一年,互证。',
passes: true,
}),
Object.freeze({
name: '末年纪年:班固用的是莽的年号,不是更始',
quote: '四年正月,漢兵得下江王常等以為助兵,擊前隊大夫甄阜、屬正梁丘賜,皆斬之。',
juan: '《漢書》卷九十九下',
witnesses: 2,
check:
'★★ 要紧:卷99下叙末年用「四年正月」= 【地皇】四年 —— 班固纪年【行用莽的年号到底】。' +
'传中「更始元年」只出现在「(漢兵)改年為更始元年」一句里,是【记刘玄之所为】,' +
'不是班固自己的纪年。' +
'⚠ wikisource 的 ==更始元年== ==更始二年== 标题是【编者加的】,B 证无之,不得据以说' +
'「班固改用更始纪年」。—— 这正是「排在后面 ≠ 不参选」那类坑的同族:' +
'【版式 ≠ 原文】。',
passes: true,
}),
]);
// ── 已排除的伪锚点,记下来防后人重捡 ──
export const REJECTED = Object.freeze([
Object.freeze({
text: '十一年當相攻,太白揚光,歲星入東井,其號當行。',
juan: '《漢書》卷九十九下',
why: '★ 不是纪年。这是卜者王況为魏成大尹李焉所作【讖書】里的话(莽捕焉下狱皆死)。' +
'检索「N年」时会命中,必须剔除。同段「四年當發軍」同理。',
}),
Object.freeze({
text: '此豈如古三皇無文書號諡邪?',
juan: '《漢書》卷九十九下',
why: '★ 与王莽有无諡號【无关】。这是京师好事者议论【赤眉】無旌旗號諡,' +
'被拿来当「莽无諡」的证据就荒谬了。记此防误引。',
}),
]);
export const WITNESS_NOTE = Object.freeze({
a: 'zh.wikisource.org/wiki/漢書/卷099上・中・下 ?action=raw(wikitext;含编者标题与 {{YL}} 浮标)',
b: 'ctext.org/han-shu/wang-mang-zhuan-shang・-zhong・-xia /zh(纯正文,无编者标题)',
method: 'curl -sk 取生 wikitext / HTML,自剥标签,先剥 -{ }- 再检索。未用 WebFetch。',
notesLayer: '⚠ 两证【均不含注】(師古曰 命中 0)。本表未核顏師古注。这是「未核」,不是「无注」。',
agreement: '本表所有 cite、年号、改元句、纪年锚点、贊,两证逐字相同,未见异文。',
openIssue:
'唯一悬案:即位詔作「建國元年」而叙事作「始建國元年」,两证【一致地】如此。' +
'要判此异文须目验点校本 + 顏注,本表【未判】。',
warn: '两证皆网络转录本,非点校本。出版级引用仍须目验中华书局点校本。',
});
// ══════════════════════════════════════════════════════════════════════════
// ══════════════════════════════════════════════════════════════════════════
// 【新 9–23:群臣图谱 + 大事件】2026-07-17 追加
//
// 上面的帝纪部分【一个字没动】。本段是追加。
//
// ══════════════════════════════════════════════════════════════════════════
// 【史源:这一朝【两样都没有】—— 既无【表】也无【紀】】
//
// · 群臣:《漢書》有《百官公卿表》(卷19下),但它【止于漢】,不录新朝。
// 新朝【没有任何年表】。⇒ 本表 54 条群臣,【全部从叙事正文抠任命句】。
// · 大事:别朝抠【本紀】;新朝【没有本紀】(见顶部)。⇒ 全部抠【王莽傳】卷99中/下。
//
// ★★ 所以本段所有 source 都是 "benji",但那是【为了跟别朝合表而占的槽】,
// 体例上【它们是傳不是紀】。每条另有 tiLi:"zhuan" 记实情。
// ⇒ 这跟顶部 citeIsBiographyNotAnnals 是同一个处理,别被 source 字段的名字骗了。
//
// ── 卷次边界(我 curl 下来自己数的,不是抄的)──
// 卷99上:止于「即真」,通篇是【漢】臣王莽的履历 ⇒ 不在 9–23 内,本段【不取】。
// 卷99中:起「始建國元年正月朔」(9) 讫「西域自此絕」(16)。
// 卷99下:起「四年五月」(=天鳳四年,17) 讫「贊曰」。
//
// ══════════════════════════════════════════════════════════════════════════
// ⚠⚠⚠ 【必须先读这一条:本朝的「两证」不是真的两证】
//
// 顶部帝纪说「两证逐字相同」。我这一轮把 A/B 两证【整卷逐字对拉】,结果是:
// · 卷99中:A 13920 字,B 13920 字,【逐字完全相同,零处异文】。
// · 卷99下:A 14209 字,B 14209 字,【只有 3 处不同】,且全是转录级讹字:
// ①「誘呼當」(A) / 「誘呼嘗」(B) —— 當是人名(下文「當在匈奴右部」),A 是,B 讹。
// ②「愈恐,欲外視自安」(A) / 「愈恐。欲…」(B) —— 仅标点。
// ③「嘗事崔發為師」(A) / 「為詩」(B) —— 未判。
//
// ★★★ 一万四千字【零处异文】,这【不是】两个见证互相印证,这是【同源】。
// 真正独立的见证(★ 点校本 vs 四库本)不可能这样 —— 底本不同、校勘不同,
// 必然散布着大量异文。逐字相同只有一个解释:**A 和 B 抄的是同一个转录本。**
// 按本项目自己的规矩:**「同一转录本的两个镜像不算」独立见证。**
//
// ⇒ 【结论,说白】:本朝【自始至终只有一个见证】。上面帝纪写的「两证逐字相同」
// 在事实上没错(确实逐字相同),但它【不能当双证用】—— 它恰恰证明了两者同源。
// ⚠ 我【没有】推翻帝纪的任何结论(那些引文我本轮全部复核过,字字都在);
// 我只是把「两证」这个词的【证据力】下调到它实际的位置。
// ⇒ 本段所有 witnesses 字段一律写 1,不写 2。要升到 2,必须目验点校本或四库本。
// ★ 这是「知道自己不知道」,不是谦虚话。别有人后来看见 A/B 都有就填 2。
// ══════════════════════════════════════════════════════════════════════════
export const XIN_WITNESS_DOWNGRADE = Object.freeze({
finding: '卷99中 A/B 两证逐字完全相同(13920/13920,零异文);卷99下仅 3 处转录讹字。',
inference:
'逐字相同 ⇒ 同源转录本,非独立见证。按本项目规矩「同一转录本的两个镜像不算」,' +
'故新朝实为【单证】。本段 witnesses 一律记 1。',
method: 'curl -sk 取生 wikitext/HTML,先剥 -{ }- 再检索,自写对拉脚本整卷逐字 diff。未用 WebFetch。',
doesNotOverturn:
'★ 不推翻帝纪任何结论 —— 其引文本轮已全部逐字复核,字字都在。此条只下调【证据力】,不动【事实】。',
toUpgrade: '要升为真双证:目验中华书局点校本(★)或四库本,与本表对拉。',
});
// ══════════════════════════════════════════════════════════════════════════
// ═══════════════════════ 一、群臣图谱 ═══════════════════════
//
// ★★ 本朝的「宰辅那一层」是【原文自己定义的】,不用我划:
// 「…是為四輔,位上公。…是為三公。…是為四將。【凡十一公】。」(卷99中,始建國元年)
// ⇒ 四輔(太師/太傅/國師/國將)+ 三公(大司馬/大司徒/大司空)
// + 四將(更始將軍/衛將軍/立國將軍/前將軍)= 十一公 = 本表 CHAO_CHEN 的全集。
// 这一层【全】—— 开国 11 人全在,此后每一次拜/免/死/誅全在。
//
// ══════════════════════════════════════════════════════════════════════════
// ★★★ 【dong 字段:本朝把这个字段的意义摊开给你看】
//
// 规范给的动词枚举是「拜|遷|免|罷|薨|誅|徙」。本表【不够用,且必须不够用】:
//
// ⚠ 本朝【一个「薨」都没有】。不是我没抠到 —— 是【全卷零命中】,而且这个零命中
// 【是有意义的】(见 BANGU_SIWEI)。把新朝的公之死抹成「薨」=伪造。
//
// ⇒ 本表 dong 一律用【原文那个字】,实际出现 12 种:
// 拜 · 徙 · 免 · 左遷 · 乞骸骨 · 歸故官 · 死 · 自殺 · 戰死 · 殺 · 誅 · 斬
// (另有 1 条 dong:'勿領尚書事' —— 见 14年平晏。那不是去职,是拆兼衔。)
//
// ★ 为什么不许抹平,本朝给了最硬的证据:
// 「免」(陳茂,以日食免) ≠ 「左遷」(苗訢,大司馬→司命,位阶下降但还在)
// ≠ 「乞骸骨」(孔永,自己请退,赐安车驷马,体面)
// ≠ 「歸故官」(戴參,退回原职) ≠ 「死」(甄邯,病死在任上)
// ≠ 「自殺」(王興,被逼) ≠ 「戰死」(廉丹,不肯走)
// ≠ 「殺」(王尋,昆陽阵上被砍) ≠ 「誅」(董忠,格殺于省中)
// ≠ 「斬」(王匡/哀章,降后传至宛市斩)
// 这十种全是「离开大司马这个位置」,十种是【十件完全不同的事】。
// ★ 抹成「担任/卸任」,这个产品就【什么都不剩了】。
// ══════════════════════════════════════════════════════════════════════════
// ★ dong 的原文取据 —— 每个动词指回它的原句,防后人以为是我编的分类
export const DONG_ATTEST = Object.freeze({
拜: '「又按金匱,輔臣皆封拜」/「以…為…」(卷99中)',
徙: '「故徙大阿、右拂、大司空豐,託符命文,為更始將軍」(卷99中)',
免: '「大司馬陳茂以日食免」(卷99中)/「寧始將軍侯輔免」(卷99中)',
左遷: '「大司馬苗訢左遷司命」(卷99中)',
乞骸骨: '「大司馬孔永乞骸骨,賜安車駟馬,以特進就朝位」(卷99中)',
歸故官: '「寧始將軍戴參歸故官」(卷99中)',
死: '「太師王舜自莽篡位後病悸,寖劇,死」(卷99中)',
自殺: '「并以責興,皆自殺」(卷99下)/「劉歆、王涉皆自殺」(卷99下)',
戰死: '「遂止,戰死」(卷99下,廉丹)',
殺: '「漢兵乘勝殺尋」(卷99下,昆陽)',
誅: '★ 本表归类。原文作「黃門持劍共格殺之」(卷99下,董忠);莽对外称「已誅」。',
斬: '「太師王匡、國將哀章降雒陽,傳詣宛,斬之」(卷99下)',
勿領尚書事: '「太傅平晏勿領尚書事」(卷99中)—— ★ 不是去职,是拆兼衔。',
});
// ══════════════════════════════════════════════════════════════════════════
// ★★★ 【班固的死字:一个可以逐字复核的发现】
//
// 顶部 BANGU_VERDICT 记了班固的判词「餘分閏位」。那是【赞里的一句话】。
// 我这一轮发现:那不是一句话,那是【贯穿全卷的笔法】,落实在每一个死字上。
//
// ── 数据(A/B 同,我逐字数的)──
// 「薨」:卷99上 3 见,【全是漢人】:
// ①「傅太后、丁太后皆先薨」(漢太后,★ 班固自己的叙述)
// ②「故太師光雖前薨」(孔光,漢【太師】—— ★ 在莽的诏书里)
// ③「今功顯君薨」(莽母,漢时受封 —— ★ 亦在诏书里)
// 卷99中 0 见。卷99下 0 见。⇒ 【整个新朝十五年,一个「薨」都没有。】
//
// 而新朝的公死在任上,班固一律给「死」:
// 太師王舜(安新公)… 死 大司馬甄邯(承新公)… 死
// 立國將軍孫建(成新公)… 死 太傅平晏(就新公)… 死
// 大司徒王尋(章新公)… 殺
// 连莽的【皇后】也是「死」:「是月,莽妻死,諡曰孝睦皇后」(卷99下,21年)。
//
// ★★ 「薨」是諸侯/公/后的死字,「死」是庶人的死字。
// 漢的太師(孔光)得「薨」。新的太師(王舜)得「死」。同一个官,同一个爵位。
//
// ★★★ ── 而这里有一个【控制组】,它把两种替代解释都杀死了 ──
// 有人会说:那是不是因为卷中/下【体例不同】或【没机会用】?
// ① 体例:不是。「薨」出现在【卷99上】—— 那也是【傳】,同一篇傳。不是紀/傳之别。
// ② 机会:不是。新朝有【五个公】死在任上,班固【五次】都没用「薨」。
// ③ ★★ 最硬的一条:「崩」在【卷99中】出现了 —— 而且【只给漢人】:
// 「五年二月,【文母皇太后崩】」(13年)—— 文母皇太后=元后王政君,【漢】的太后。
// 同一卷、同一段新朝叙事之内:13年,漢的太后【崩】;21年,新的皇后【死】。
// 隔八年,同一支笔。
// ⇒ 词汇【就在手边】,班固【不给】。这不是零命中推论 —— 这是【两个正命中的对照】。
//
// ⚠ 诚实的边界(不许有人把这条吹大):
// · 班固【自己叙述】里的「薨」样本只有 1 个(傅太后、丁太后);另两个「薨」在
// 莽的诏书里,是【莽的话】不是班固的话。所以「班固亲笔的薨」n=1。
// · 「崩/死」那组对照(文母皇太后崩 vs 莽妻死)是【班固亲笔 vs 班固亲笔】,n=1 vs n=1,
// ★ 这一组才是真正干净的,也是本条的主证。
// · 本轮【未核顏師古注】(師古曰 零命中,见 WITNESS_NOTE)。若点校本有注议此,须重看。
// · ★ 且本朝是【单证】(见 XIN_WITNESS_DOWNGRADE)—— A/B 同源,此计数只等于一个转录本的计数。
// · ⇒ 定性:【强,但不是铁案】。是「值得写进产品的发现」,不是「可以当定论引的结论」。
// ══════════════════════════════════════════════════════════════════════════
export const BANGU_SIWEI = Object.freeze({
claim: '班固的「餘分閏位」不止是赞里一句话 —— 它落实为贯穿全卷的【死字】笔法:新朝的人,降一等死。',
counts: Object.freeze({
hongInJuan99Shang: 3, // 全为漢人
hongInJuan99Zhong: 0,
hongInJuan99Xia: 0,
bengAsDeathVerbInZhong: 1, // 「文母皇太后崩」—— 漢太后
}),
hanSide: Object.freeze([
Object.freeze({ ren: '傅太后、丁太后', shen: '漢太后', zi: '薨', voice: '班固叙述', juan: '卷99上' }),
Object.freeze({ ren: '孔光', shen: '漢太師', zi: '薨', voice: '★ 莽诏书内,非班固亲笔', juan: '卷99上' }),
Object.freeze({ ren: '功顯君(莽母)', shen: '漢所封', zi: '薨', voice: '★ 莽诏书内,非班固亲笔', juan: '卷99上' }),
Object.freeze({ ren: '文母皇太后(元后王政君)', shen: '漢太后', zi: '崩', voice: '班固叙述', juan: '卷99中', year: 13 }),
]),
xinSide: Object.freeze([
Object.freeze({ ren: '王舜', shen: '新太師·安新公', zi: '死', juan: '卷99中', year: 11 }),
Object.freeze({ ren: '甄邯', shen: '新大司馬·承新公', zi: '死', juan: '卷99中', year: 12 }),
Object.freeze({ ren: '孫建', shen: '新立國將軍·成新公', zi: '死', juan: '卷99中', year: 15 }),
Object.freeze({ ren: '平晏', shen: '新太傅·就新公', zi: '死', juan: '卷99下', year: 20 }),
Object.freeze({ ren: '莽妻(孝睦皇后)', shen: '新皇后', zi: '死', juan: '卷99下', year: 21 }),
Object.freeze({ ren: '王尋', shen: '新大司徒·章新公', zi: '殺', juan: '卷99下', year: 23 }),
Object.freeze({ ren: '王莽', shen: '新天子', zi: '殺', juan: '卷99下', year: 23, note: '「商人杜吳殺莽」—— 天子而得「殺」' }),
]),
control:
'★★ 主证:同在卷99中,13年「文母皇太后【崩】」(漢太后)vs 21年「莽妻【死】」(新皇后)—— ' +
'班固亲笔对班固亲笔,隔八年,同一卷。词汇在手边,他不给。⇒ 排除「体例不同」「没机会用」两种解释。',
controlForTiLi: '「薨」出现在卷99【上】,那也是【傳】 ⇒ 不是紀/傳体例之别。',
confidence: '强,非铁案',
limits:
'① 班固亲笔的「薨」样本 n=1(另两处在莽诏里,是莽的话)。② 本轮未核顏師古注。' +
'③ 本朝是单证(A/B 同源),此计数只等于一个转录本的计数。' +
'④ 本条是【本表的观察】,不是任何一家的注 —— 引用请引 counts 与 hanSide/xinSide 的原文,别引这段话。',
whyItMatters:
'★ 对本产品这是【正题】:产品内核是「分身是史官,传主是你」。' +
'同样爬到「太師」,孔光得「薨」,王舜得「死」。你什么都没变 —— 你还是太師。' +
'变的是【写你的人属于哪个朝】。位阶不是判决,【写位阶的那支笔】才是。',
});
// ══════════════════════════════════════════════════════════════════════════
// 【群臣:悬案,先摊开再上表】
// ══════════════════════════════════════════════════════════════════════════
export const CHEN_CRUXES = Object.freeze([
Object.freeze({
id: 'houfu-name',
issue: '「侍中大贅侯輔為寧始將軍」(12年)—— 人名是【侯輔】还是【輔】(爵为大贅侯)?',
forA: '14年作「寧始將軍【侯輔】免」,「侯」紧贴「輔」,读作姓名「侯輔」最顺。',
forB:
'「大贅」是【官】不是爵:「又置大贅官,主乘輿服御物,後又典兵秩,位皆上卿,號曰六監」(卷99中)。' +
'★ 且有平行句:「司中【大贅】起武侯孫伋」(卷99下)= 官+官+爵+姓名 ⇒ ' +
'照此,「侍中大贅侯輔」= 官+官+?+名,则名可能只是「輔」。',
verdict: '★【未判】。仅此二见,本轮未核顏師古注,判不出来。',
impact:
'⚠ 只影响【人名】。本条的 year(12/14) 与 guan(寧始將軍) 两个字段【是确定的】,' +
'产品的核心查询(那年谁在这个位置上、出了什么事)不受影响。' +
'⇒ ren 记原文的字「侯輔」并挂 renUncertain,不替读者选。',
}),
Object.freeze({
id: 'gengshi-ningshi-rename',
issue: '更始將軍 ↔ 寧始將軍:改名【那一次没被记下来】。',
chain:
'9年 甄豐【更始將軍】→ 10年 豐自殺 → 同年「以初睦侯姚恂為【寧始將軍】」(★ 官名已变,改名无记载)' +
'… → 19年「復以寧始將軍為更始將軍,以順符命」(★ 这次改【回来】有记载)。',
verdict:
'★ 原文只记了【改回来】那一次,没记【改过去】那一次。⇒ 更始→寧始 发生在 9–10 年间,' +
'具体时点【未核】。本表两个官名【都按原文那一刻的字记】,不统一、不回填。',
warn: '⚠ 不许有人为了「干净」把 9–19 年的寧始將軍统一改写成更始將軍。那是拿整齐伪造原文。',
}),
Object.freeze({
id: 'shichen-guan',
issue: '★ 23年 史諶:原文【同一年内】两个官名打架。',
detail:
'23年「封皇后父諶為和平侯,【拜為寧始將軍】」;同年下文「【更始將軍】史諶行諸署」。' +
'而 19年已「復以寧始將軍為更始將軍」—— 按 19年那道诏,23年该只有【更始將軍】。',
verdict:
'★【原文自身不自洽】,不是转录错(A/B 皆如此,且此处 A/B 同源,见 XIN_WITNESS_DOWNGRADE)。' +
'可能:①班固沿用旧称 ②又改回去过而失载 ③传写之误。【未判】。',
handling: 'CHAO_CHEN 记 guan:"寧始將軍"(拜授那一刻的原文字),并挂 guanAlias:"更始將軍" + 本 crux id。',
}),
Object.freeze({
id: 'wangyi-qihaigu-refused',
issue: '★★ 16年 大司空王邑「乞骸骨」—— 但【莽不许】。',
quote:
'「大司空王邑上書言:『視事八年,功業不效,司空之職尤獨廢頓,至乃有地震之變。願乞骸骨。』' +
'莽曰:『…公何辜焉,而乞骸骨,非所以助予者也。』」(卷99中)',
verdict:
'⇒ 这【不是】一次黜陟,王邑【继续做大司空】直到 23年改任大司馬。' +
'★ 故本表【不给它一条 CHEN 记录】—— 请辞未遂不是人事变动。',
warn:
'⚠⚠ 这是本朝最容易造出假记录的地方:grep「乞骸骨」会命中两处,' +
'13年孔永那次【准了】(赐安车驷马),16年王邑这次【驳了】。' +
'照抄两条 ⇒ 凭空多出一个不存在的大司空空缺。★ 已在此拦下。',
bonus: '★ 「視事八年」是个自洽锚:王邑 9年拜大司空,至 16年含首尾正是 8 年。原文自证。',
}),
Object.freeze({
id: 'yanyou-not-xin',
issue: '★★★ 23年「以尤為大司馬,茂為丞相」—— 这【不是新朝的任命】。',
quote:
'「聞故漢鍾武侯劉聖聚眾汝南稱尊號,尤、茂降之。【以尤為大司馬,茂為丞相】。十餘日敗,尤、茂并死。」(卷99下)',
verdict:
'★ 拜他们的是【劉聖】(自称尊号的汉宗室),不是王莽。且新朝【无丞相】这个官(三公是大司馬/徒/空)—— ' +
'「丞相」二字本身就在喊「这不是新朝的官制」。',
handling: '⇒ 本表【剔除】。嚴尤在新朝的记录止于 19年免。',
warn:
'⚠⚠ 这是本朝最毒的陷阱:直接 grep「[為爲]大司馬」会把它抓进来,' +
'于是嚴尤凭空多出一任新朝大司馬(23年),而真相是他那时【已经降汉了】。' +
'★ 「命中 ≠ 属于本朝」。逐条看主语是谁在拜。已在此拦下。',
}),
Object.freeze({
id: 'taishi-jiangjun',
issue: '11年 王匡官名作「太師將軍」,而 22/23年作「太師」。',
detail:
'11年:「其以舜子延襲父爵,為安新公,延弟褒新侯匡為【太師將軍】,永為新室輔。」' +
'22年:「今使東嶽【太師】特進【褒新侯】開東方諸倉」——爵同(褒新侯)⇒ 同一人。' +
'23年:「【太師王匡】、國將哀章降雒陽」。',
verdict:
'★【未判】「太師將軍」与「太師」是不是一个官。可能是①王舜死后匡先领将军号后转正 ' +
'②「太師將軍」是太師的全称 ③别的。本表按原文那一刻的字记,不统一。',
}),
]);
// ══════════════════════════════════════════════════════════════════════════
// 【CHAO_CHEN:54 条】
// · year:公元。全部由【原文纪年锚点】定位(见 CHAO_COVERAGE.chen.method),非估算。
// · guan:原文那一刻的【原字】。不统一、不回填、不「订正」。
// · dong:原文那个【动词】。见 DONG_ATTEST。
// · source:"benji" = 与别朝合表用的槽;tiLi:"zhuan" = 实情(本朝无紀无表)。
// · witnesses:一律 1。理由见 XIN_WITNESS_DOWNGRADE。
// ══════════════════════════════════════════════════════════════════════════
const J_ZHONG = '《漢書》卷九十九中·王莽傳第六十九中';
const J_XIA = '《漢書》卷九十九下·王莽傳第六十九下';
const C = (year, guan, ren, dong, juan, cite, extra) =>
Object.freeze(
Object.assign(
{ year, guan, ren, dong, juan, cite, source: 'benji', tiLi: 'zhuan', witnesses: 1 },
extra || {},
),
);
// 开国十一公的共同出处(一句话拜了十一个人)
const CITE_11 =
'又按金匱,輔臣皆封拜。以太傅、左輔、驃騎將軍安陽侯王舜為太師,封安新公;大司徒就德侯平晏為太傅,就新公;' +
'少阿、羲和、京兆尹紅休侯劉歆為國師,嘉新公;廣漢梓潼哀章為國將,美新公:是為四輔,位上公。' +
'太保、後承承陽侯甄邯為大司馬,承新公;丕進侯王尋為大司徒,章新公;步兵將軍成都侯王邑為大司空,隆新公:是為三公。' +
'大阿、右拂、大司空、衛將軍廣陽侯甄豐為更始將軍,廣新公;京兆王興為衛將軍,奉新公;' +
'輕車將軍成武侯孫建為立國將軍,成新公;京兆王盛為前將軍,崇新公:是為四將。凡十一公。';
const CITE_BUYI =
'王興者,故城門令史。王盛者,賣餅。莽按符命求得此姓名十餘人,兩人容貌應卜相,徑從布衣登用,以視神焉。餘皆拜為郎。';
export const CHAO_CHEN = Object.freeze([
// ── 9(始建國元年):开国十一公。★ 这一层【全】,原文一次拜足。 ──
C(9, '太師', '王舜', '拜', J_ZHONG, CITE_11, { jue: '安新公', ceng: '四輔', qian: '太傅、左輔、驃騎將軍、安陽侯' }),
C(9, '太傅', '平晏', '拜', J_ZHONG, CITE_11, { jue: '就新公', ceng: '四輔', qian: '大司徒、就德侯' }),
C(9, '國師', '劉歆', '拜', J_ZHONG, CITE_11, { jue: '嘉新公', ceng: '四輔', qian: '少阿、羲和、京兆尹、紅休侯' }),
C(9, '國將', '哀章', '拜', J_ZHONG, CITE_11, {
jue: '美新公',
ceng: '四輔',
qian: '廣漢梓潼(★ 无官 —— 献金匱者,一步到上公)',
}),
C(9, '大司馬', '甄邯', '拜', J_ZHONG, CITE_11, { jue: '承新公', ceng: '三公', qian: '太保、後承、承陽侯' }),
C(9, '大司徒', '王尋', '拜', J_ZHONG, CITE_11, { jue: '章新公', ceng: '三公', qian: '丕進侯' }),
C(9, '大司空', '王邑', '拜', J_ZHONG, CITE_11, { jue: '隆新公', ceng: '三公', qian: '步兵將軍、成都侯' }),
// ★★ 甄豐这条是本朝最要紧的一条。动词是【徙】不是【拜】—— 原文自己说破了。
C(9, '更始將軍', '甄豐', '徙', J_ZHONG, CITE_11, {
jue: '廣新公',
ceng: '四將',
qian: '大阿、右拂、大司空、衛將軍、廣陽侯',
dongCite:
'豐素剛強,莽覺其不說,故徙大阿、右拂、大司空豐,託符命文,為更始將軍,與賣餅兒王盛同列。豐父子默默。',
dongCiteJuan: J_ZHONG,
note:
'★★★ 位阶【没降】:大司空是三公,更始將軍是四將,同为十一公,都是「公」。' +
'但原文说这是【罚】:「託符命文」=借符命之名,「與賣餅兒王盛同列」=跟卖饼的排一块。' +
'⇒ 罚不在【格子】,在【同列的是谁】。「豐父子默默」四个字是判词。' +
'★ 老板那句「你什么都没变,天花板全变了」,这一条是它的原文出处。',
}),
C(9, '衛將軍', '王興', '拜', J_ZHONG, CITE_11, {
jue: '奉新公',
ceng: '四將',
qian: '京兆(★ 故城門令史)',
renCite: CITE_BUYI,
renCiteJuan: J_ZHONG,
}),
C(9, '立國將軍', '孫建', '拜', J_ZHONG, CITE_11, { jue: '成新公', ceng: '四將', qian: '輕車將軍、成武侯' }),
C(9, '前將軍', '王盛', '拜', J_ZHONG, CITE_11, {
jue: '崇新公',
ceng: '四將',
qian: '京兆(★★ 賣餅)',
renCite: CITE_BUYI,
renCiteJuan: J_ZHONG,
note:
'★★★ 卖饼的。十一公之一。理由:名字对上了符命,长相合卜相。「徑從布衣登用」。' +
'⇒ 本朝把「位阶从哪来」这个问题的答案摊开摆着:不是功、不是资、不是考 —— 是【名字抽中了】。',
}),
// ── 10(始建國二年)──
C(10, '更始將軍', '甄豐', '自殺', J_ZHONG,
'莽以詐立,心疑大臣怨謗,欲震威以懼下,因是發怒曰:「黃皇室主天下母,此何謂也!」收捕尋。尋亡,豐自殺。', {
jue: '廣新公',
note:
'★ 死因不是他自己的事:其子甄尋作符命,说漢平帝后黃皇室主该做甄尋的妻。莽怒收捕尋,尋亡,' +
'【豐自殺】。⇒ 十一公之一,因儿子伪造一道符命而死 —— 而符命【正是把他自己抬上公位的那套东西】。',
lianzuo:
'「辭連國師公歆子侍中東通靈將、五司大夫隆威侯棻,棻弟右曹長水校尉伐虜侯泳,大司空邑弟左闕將軍堂威侯奇,' +
'及歆門人侍中騎都尉丁隆等,牽引公卿黨親列侯以下,死者數百人。」' +
'★★ 注意谁没死:【國師劉歆】(死的是他两个儿子)、【大司空王邑】(死的是他弟弟)。' +
'两人都稳坐原位。⇒ 到了那一层,死的是你的亲属,不是你的位置。',
}),
C(10, '寧始將軍', '姚恂', '拜', J_ZHONG, '是歲,以初睦侯姚恂為寧始將軍。', {
jue: '初睦侯',
guanCrux: 'gengshi-ningshi-rename',
note: '★ 官名此处已作【寧始將軍】,而 9年甄豐是【更始將軍】—— 改名无载。见 CHEN_CRUXES。',
}),
// ── 11(始建國三年)──
C(11, '太師', '王舜', '死', J_ZHONG, '太師王舜自莽篡位後病悸,寖劇,死。', {
jue: '安新公',
note:
'★★ 「自莽篡位後病悸」—— 班固写他【自打莽篡位就心悸】,病了三年,死。' +
'王舜是莽的族弟、是替莽去逼太后交玉玺的人。⇒ 爬到太師(四輔之首),得到的是三年心悸。' +
'★ 而班固给他的死字是【死】不是【薨】。见 BANGU_SIWEI。',
}),
C(11, '太師將軍', '王匡', '拜', J_ZHONG,
'莽曰:「昔齊太公以淑德累世,為周氏太師,蓋予之所監也。其以舜子延襲父爵,為安新公,延弟褒新侯匡為太師將軍,永為新室輔。」', {
jue: '褒新侯',
guanCrux: 'taishi-jiangjun',
note: '★ 王舜死,其【爵】由子王延袭,其【职】由另一子王匡领。⇒ 位子在家里传,不出王氏。',
}),
C(11, '寧始將軍', '姚恂', '免', J_ZHONG, '寧始將軍姚恂免,侍中崇祿侯孔永為寧始將軍。', { jue: '初睦侯' }),
C(11, '寧始將軍', '孔永', '拜', J_ZHONG, '寧始將軍姚恂免,侍中崇祿侯孔永為寧始將軍。', { jue: '崇祿侯', qian: '侍中' }),
// ── 12(始建國四年)──
C(12, '大司馬', '甄邯', '死', J_ZHONG, '大司馬甄邯死,寧始將軍孔永為大司馬,侍中大贅侯輔為寧始將軍。', {
jue: '承新公',
note: '★ 死字作「死」不作「薨」。见 BANGU_SIWEI。',
}),
C(12, '大司馬', '孔永', '拜', J_ZHONG, '大司馬甄邯死,寧始將軍孔永為大司馬,侍中大贅侯輔為寧始將軍。', {
jue: '崇祿侯',
qian: '寧始將軍',
}),
C(12, '寧始將軍', '侯輔', '拜', J_ZHONG, '大司馬甄邯死,寧始將軍孔永為大司馬,侍中大贅侯輔為寧始將軍。', {
qian: '侍中、大贅',
renUncertain: true,
renCrux: 'houfu-name',
renNote: '⚠ 人名【未判】:「侯輔」抑或「輔」(爵大贅侯)。见 CHEN_CRUXES。year 与 guan 不受影响。',
}),
// ── 13(始建國五年)──
C(13, '大司馬', '孔永', '乞骸骨', J_ZHONG, '大司馬孔永乞骸骨,賜安車駟馬,以特進就朝位。同風侯逯並為大司馬。', {
jue: '崇祿侯',
note:
'★★ 本朝【唯一一次体面的下台】:自己请退,准了,赐安车驷马,还留「特進就朝位」。' +
'⚠ 对照 16年王邑同样「乞骸骨」而【被驳】(见 CHEN_CRUXES.wangyi-qihaigu-refused)—— ' +
'同一个动作,一个准一个驳。⇒ 请退不是权利,是恩典。',
}),
C(13, '大司馬', '逯並', '拜', J_ZHONG, '大司馬孔永乞骸骨,賜安車駟馬,以特進就朝位。同風侯逯並為大司馬。', {
jue: '同風侯',
}),
// ── 14(天鳳元年)──
C(14, '大司馬', '逯並', '免', J_ZHONG,
'策大司馬逯並曰:「日食無光,干戈不戢,其上大司馬印韍,就侯氏朝位。太傅平晏勿領尚書事,省侍中諸曹兼官者。以利苗男訢為大司馬。」', {
jue: '同風侯',
dongIsEditorial: true,
dongNote: '⚠ 原文无「免」字,作「其上大司馬印韍」=交印。本表归类为「免」。别当原文有「免」字引。',
note:
'★★ 罢免理由:【日食無光,干戈不戢】—— 天上日食,地上没打赢。' +
'⇒ 大司馬为【一次日食】负责。',
}),
C(14, '大司馬', '苗訢', '拜', J_ZHONG,
'策大司馬逯並曰:「日食無光,干戈不戢,其上大司馬印韍,就侯氏朝位。太傅平晏勿領尚書事,省侍中諸曹兼官者。以利苗男訢為大司馬。」', {
jue: '利苗男',
}),
C(14, '太傅', '平晏', '勿領尚書事', J_ZHONG,
'策大司馬逯並曰:「日食無光,干戈不戢,其上大司馬印韍,就侯氏朝位。太傅平晏勿領尚書事,省侍中諸曹兼官者。以利苗男訢為大司馬。」', {
jue: '就新公',
dongIsEditorial: false,
notARemoval: true,
note:
'★★★ 这条最像本产品要的东西:平晏【还是太傅】,官没动、爵没动 —— ' +
'被拿走的是【領尚書事】,一个兼衔。而尚書是出纳王命的地方。' +
'⇒ 你什么都没变。天花板变了。(同一道策书里,别人在交大司馬的印;他只是不再管文书。)' +
'⚠ 这【不是去职】—— 平晏做太傅做到 20年死。zaiRenAt 不把它当去职处理。',
}),
C(14, '寧始將軍', '侯輔', '免', J_ZHONG, '寧始將軍侯輔免,講易祭酒戴參為寧始將軍。', {
renUncertain: true,
renCrux: 'houfu-name',
}),
C(14, '寧始將軍', '戴參', '拜', J_ZHONG, '寧始將軍侯輔免,講易祭酒戴參為寧始將軍。', {
qian: '講易祭酒',
note: '★ 讲《易》的祭酒(学官)直接做将军。本朝的位阶不按履历走。',
}),
// ── 15(天鳳二年)──
C(15, '大司馬', '苗訢', '左遷', J_ZHONG, '大司馬苗訢左遷司命,以延德侯陳茂為大司馬。', {
jue: '利苗男',
note:
'★★ 【左遷】不是【免】:他没出局,他往下挪了一格(大司馬→司命)。' +
'⇒ 而 23年他又回来了 —— 做【國師】(见 23年)。左遷八年后回到四輔。' +
'这条单独看没意思,跟 23年那条连起来才是一条完整的仕途曲线。★ 这就是图谱不是名单的意思。',
}),
C(15, '大司馬', '陳茂', '拜', J_ZHONG, '大司馬苗訢左遷司命,以延德侯陳茂為大司馬。', { jue: '延德侯' }),
C(15, '立國將軍', '孫建', '死', J_ZHONG, '立國將軍孫建死,司命趙閎為立國將軍。', {
jue: '成新公',
note: '★ 死字作「死」。见 BANGU_SIWEI。',
}),
C(15, '立國將軍', '趙閎', '拜', J_ZHONG, '立國將軍孫建死,司命趙閎為立國將軍。', {
qian: '司命',
note: '★ 趙閎腾出的【司命】正好接住同年被左遷的苗訢 —— 同一年,两条记录咬合。',
}),
C(15, '寧始將軍', '戴參', '歸故官', J_ZHONG, '寧始將軍戴參歸故官,南城將軍廉丹為寧始將軍。', {
note: '★ 【歸故官】=退回原职(講易祭酒)。不是免,不是贬 —— 是「回去接着讲你的《易》」。又一个不同的动词。',
}),
C(15, '寧始將軍', '廉丹', '拜', J_ZHONG, '寧始將軍戴參歸故官,南城將軍廉丹為寧始將軍。', { qian: '南城將軍' }),
// ── 16(天鳳三年)──
C(16, '大司馬', '陳茂', '免', J_ZHONG, '大司馬陳茂以日食免,武建伯嚴尤為大司馬。', {
jue: '延德侯',
note:
'★★★ 「【以日食免】」—— 四个字。因为一次日食,大司馬下台。' +
'⇒ 而 14年逯並下台也是「日食無光」。两任大司馬,两次日食。' +
'★ 这是本朝最干净的一条「位置不是判决」的证据:你做得好不好不由你决定,由天上决定。' +
'★ 本条原文【真有「免」字】(对照 14年逯並那条是本表归类的)。',
}),
C(16, '大司馬', '嚴尤', '拜', J_ZHONG, '大司馬陳茂以日食免,武建伯嚴尤為大司馬。', { jue: '武建伯' }),
// ── 18(天鳳五年)──
C(18, '衛將軍', '王興', '自殺', J_XIA,
'宗姊妨為衛將軍王興夫人,祝詛姑,殺婢以絕口。事發覺,莽使中常侍鹊惲責問妨,并以責興,皆自殺。', {
jue: '奉新公',
note:
'★★★ 九年前,他是【城門令史】—— 守门的小吏。因为名字对上符命,「徑從布衣登用」,做了衛將軍、奉新公,十一公之一。' +
'九年后,他老婆(莽的孙女王妨)诅咒婆婆、杀婢灭口,事发,莽派中常侍来「责问」—— 【皆自殺】。' +
'⇒ 符命把他抬上来,一场家里的官司把他送走。全程他【没做过任何决定】。' +
'★ 这就是「位阶不是判决」的反面:位阶也不是保护。',
lianzuo: '「事連及司命孔仁妻,亦自殺。」★ 连坐还咬到司命孔仁的妻子 —— 孔仁本人只是「免冠謝」,活着。',
}),
C(18, '衛將軍', '王涉', '拜', J_XIA, '以直道侯王涉為衛將軍。涉者,曲陽侯根子也。', {
jue: '直道侯',
note:
'★ 王涉是曲陽侯王根之子。而王根【正是成帝时举荐王莽自代的那个大司馬】' +
'(原文:「根,成帝世為大司馬,薦莽自代,莽恩之」)。⇒ 莽报的是三十年前的举荐之恩。' +
'★★ 而 23年,这个因父恩得位的王涉,谋反自杀。',
}),
// ── 19(天鳳六年)──
C(19, '大司馬', '嚴尤', '免', J_XIA,
'「視事四年,蠻夷猾夏不能遏絕,寇賊姦宄不能殄滅,不畏天威,不用詔命,貌佷自臧,持必不移,懷執異心,非沮軍議。未忍致于理,其上大司馬武建伯印韍,歸故郡。」', {
jue: '武建伯',
dongIsEditorial: true,
dongNote: '⚠ 原文无「免」字,作「上…印韍,歸故郡」。本表归类为「免」。',
note:
'★ 「視事四年」是个自洽锚:16年拜,至 19年含首尾正是 4 年。原文自证。' +
'★★ 罪名值得逐字读:前半是【办事不力】(蠻夷不能絕、寇賊不能滅),' +
'后半是【态度问题】(貌佷自臧、懷執異心、非沮軍議)。「未忍致于理」=还没送法办。' +
'⇒ 嚴尤是全传里屡次直谏且【说对了】的人(谏莽勿迎須卜當、昆陽谏勿围城,皆不听,皆应验)。' +
'他的下场是:以「懷執異心」免。★ 说对话的代价。',
}),
C(19, '大司馬', '董忠', '拜', J_XIA, '以降符伯董忠為大司馬。', { jue: '降符伯' }),
// ── 20(地皇元年)──
C(20, '太傅', '平晏', '死', J_XIA, '太傅平晏死,以予虞唐尊為太傅。', {
jue: '就新公',
note: '★ 开国十一公之一,做满 11 年(9→20),死在任上。死字作【死】。见 BANGU_SIWEI。',
}),
C(20, '太傅', '唐尊', '拜', J_XIA, '太傅平晏死,以予虞唐尊為太傅。', { qian: '予虞' }),
// ── 22(地皇三年)──
C(22, '更始將軍', '廉丹', '戰死', J_XIA,
'合戰成昌,兵敗,匡走。丹使吏持其印韍符節付匡曰:「小兒可走,吾不可!」遂止,戰死。', {
yue: '冬',
note:
'★★★ 本朝最硬的一条,全靠这个动词立着 ——【戰死】,不是死、不是誅、不是自殺。' +
'他先把【印韍符節】交给王匡,然后留下。「小兒可走,吾不可!」' +
'⇒ 印,就是让你不能跑的那个东西。他把印交出去了 —— 交出去之后还是没跑。' +
'★★ 同一场仗:太師王匡(十一公,位在他之上)【走】了,活着;更始將軍廉丹【止】,死了。' +
'同一年、同一层、同一战,两个公,两个动词:【走】与【戰死】。' +
'⇒ 位阶给了你同一个格子,格子里的人可以选。这是本表里【唯一一次】有人真的选了。',
beforeCite:
'★ 就在几个月前,二人还一起受赏:「廉丹、王匡攻拔之,斬首萬餘級。莽遣中郎將奉璽書勞丹、匡,進爵為公,' +
'封吏士有功者十餘人。」(22年冬,無鹽)—— 一起进爵为公,转头一个走一个死。',
}),
// ── 23(地皇四年):新亡之年 ──
C(23, '寧始將軍', '史諶', '拜', J_XIA, '封皇后父諶為和平侯,拜為寧始將軍,諶子二人皆侍中。', {
jue: '和平侯',
guanCrux: 'shichen-guan',
guanAlias: '更始將軍',
note:
'★ 莽在亡国那年娶了史氏女为皇后(「欲外視自安,乃染其須髮,進所徵天下淑女杜陵史氏女為皇后」),' +
'于是老丈人拜寧始將軍、两个小舅子做侍中。⇒ 王朝最后半年,位阶仍在按婚姻发放。' +
'⚠ 官名与 19年诏冲突,见 CHEN_CRUXES.shichen-guan。',
}),
C(23, '大司徒', '王尋', '殺', J_XIA,
'尋、邑易之,自將萬餘人行陳,敕諸營皆按部毋得動,獨迎,與漢兵戰,不利。大軍不敢擅相救,漢兵乘勝殺尋。', {
jue: '章新公',
yue: '六月',
note:
'★ 开国十一公之一,做满 15 年(9→23),死在昆陽。死字作【殺】—— 阵上被砍,不是「薨」。' +
'★★ 死因逐字读:「敕諸營皆按部毋得動」=他自己下令各营不许动,' +
'「大軍不敢擅相救」=于是四十二万大军眼看着他被杀。⇒ 他死于自己的军令。',
}),
C(23, '大司馬', '董忠', '誅', J_XIA,
'中黃門各拔刃將忠等送廬,忠拔劍欲自刎,侍中王望傳言大司馬反,黃門持劍共格殺之。', {
jue: '降符伯',
yue: '七月',
dongIsEditorial: true,
dongNote:
'⚠ 原文的字是【格殺】(当场砍死),不是「誅」。本表归类为「誅」。' +
'★★ 三个说法同一件事:实际发生=【格殺】;莽对郎吏宣布=「大司馬有狂病,發,【已誅】」;' +
'⇒ 官方口径与实况与借口,全在原文里,别合并。',
hou: '「收忠宗族,以醇醯毒藥、尺白刃叢僰并一坎而埋之。」★ 灭族,且以醋、毒药、白刃、荆棘同埋一坑。',
}),
C(23, '國師', '劉歆', '自殺', J_XIA, '劉歆、王涉皆自殺。莽以二人骨肉舊臣,惡其內潰,故隱其誅。', {
jue: '嘉新公',
yue: '七月',
note:
'★★★ 开国十一公之一,做满 15 年。反莽的动机原文写死了:「【歆怨莽殺其三子】,又畏大禍至」。' +
'⇒ 回看 10年那条:甄尋案「辭連國師公歆子…棻…泳」—— 那就是他的儿子。' +
'他当年【没动】,稳坐國師十三年。十三年后他动了,自杀。' +
'★ 「莽以二人骨肉舊臣,惡其內潰,故【隱其誅】」—— 连他们怎么死的都不许说。',
yaoyan: '★ 起事的由头是道士西門君惠的一句谶:「星孛掃宮室,劉氏當復興,【國師公姓名是也】。」',
}),
C(23, '衛將軍', '王涉', '自殺', J_XIA, '劉歆、王涉皆自殺。莽以二人骨肉舊臣,惡其內潰,故隱其誅。', {
jue: '直道侯',
yue: '七月',
note: '★ 五年前因父亲王根三十年前举荐莽而得位(见 18年),五年后谋反自杀。',
}),
C(23, '大司馬', '王邑', '拜', J_XIA,
'於是莽遣發馳傳諭邑:「我年老毋適子,欲傳邑以天下。敕亡得謝,見勿復道。」邑到,以為大司馬。', {
jue: '隆新公',
qian: '大司空(9–23,凡十五年)',
note:
'★★ 开国十一公里【唯一一个从头站到尾的】:大司空 9→23,再转大司馬。' +
'★ 拜他的话是「我年老毋適子,欲傳邑以天下」—— 亡国前两个月,莽拿【天下】当聘礼召人回来。' +
'而崔發教他这么说的理由是:「邑素小心,今失大眾而徵,恐其執節引決」=怕他自杀。' +
'⇒ 这句「传你天下」不是恩典,是【哄】。原文把这个动机也写下来了。',
}),
C(23, '大司徒', '張邯', '拜', J_XIA,
'邑到,以為大司馬。大長秋張邯為大司徒,崔發為大司空,司中壽容苗訢為國師,同說侯林為衛將軍。', { qian: '大長秋' }),
C(23, '大司空', '崔發', '拜', J_XIA,
'邑到,以為大司馬。大長秋張邯為大司徒,崔發為大司空,司中壽容苗訢為國師,同說侯林為衛將軍。', {
jue: '說符侯',
note: '★ 21年孫祿当面骂他「說符侯崔發阿諛取容,令下情不上通」,请诛。两年后他做大司空。',
}),
C(23, '國師', '苗訢', '拜', J_XIA,
'邑到,以為大司馬。大長秋張邯為大司徒,崔發為大司空,司中壽容苗訢為國師,同說侯林為衛將軍。', {
qian: '司中、壽容',
note:
'★★ 完整曲线:14年拜大司馬 → 15年左遷司命 → 23年拜國師(四輔)。' +
'⇒ 左遷八年后回到比原来更高的一层。「位置不是判决」在这条上是字面意思。',
}),
C(23, '衛將軍', '王林', '拜', J_XIA,
'邑到,以為大司馬。大長秋張邯為大司徒,崔發為大司空,司中壽容苗訢為國師,同說侯林為衛將軍。', { jue: '同說侯' }),
C(23, '太師', '王匡', '斬', J_XIA, '太師王匡、國將哀章降雒陽,傳詣宛,斬之。', {
jue: '褒新侯',
note: '★★ 22年成昌他【走】了(廉丹留下战死)。走了这一年多,最后在雒陽降,传到宛,斩。',
}),
C(23, '國將', '哀章', '斬', J_XIA, '太師王匡、國將哀章降雒陽,傳詣宛,斬之。', {
jue: '美新公',
note:
'★★★ 首尾一条线:哀章就是【造金匱的那个人】—— 广汉梓潼一个学生,伪造金匱图书,' +
'把自己的名字写进去,于是 9年直接做國將、美新公,位上公,十一公之一,无任何前官。' +
'⇒ 伪造一个匣子,换十五年上公。最后降了,斩于宛市。' +
'★ 他是这一朝的开头(金匱是莽即真的凭据)也是这一朝的结尾。',
}),
]);
// ══════════════════════════════════════════════════════════════════════════
// ═══════════════════════ 二、大事件 ═══════════════════════
//
// ★ 别朝抠本紀;本朝【无本紀】,抠《王莽傳》卷99中/下 的编年叙事。
//
// ★★★ layer 判据(逐条给理由,不空标):
// 事(1–50):一场仗、一次废立、一个人的死
// 制(50–500):一个制度的确立/废除
// 道(500+):改变了此后千年的
//
// ⚠⚠ 【本朝「道」= 0】。这不是偷懒,这是本朝的【结论】:
// 莽建的每一样东西,要么被他自己废掉(王田,9 立 12 废,活了三年),
// 要么随他一起死在 23 年。十五年,【零样存活】。
// ⇒ 找不到任何一条能通过「它到 1500 年还在起作用吗」这一问。
// ★★ 而这恰恰就是班固那句「餘分閏位」的实证形态:闰,是【不进位】的那个零头。
// 不是我不给新朝「道」—— 是新朝【真的一样都没留下】。零本身就是这一朝的答案。
//
// ⚠ 关于「制」:本朝的「制」全部【短命】(最长的六筦 10→23,十三年,随朝而亡)。
// 按「五十年后还在起作用吗」这一问,它们【全部不及格】。
// 本表仍标「制」而非「事」,理由:layer 分的是【这件事是什么种类】,不是【它成功没有】。
// 「制」的定义是「一个制度的【确立/废除】」—— 王田是全国土地法的确立,六筦是全国专卖的确立,
// 它们是【法】不是【仗】。一个失败的制度变革仍然是制度变革,它的失败正是内容。
// ★ 但这个张力是真的,每条 layerNote 里都写明了它的 50 年测试结果。别假装它通过了。
// ══════════════════════════════════════════════════════════════════════════
const S = (year, yue, shi, juan, layer, layerNote, zaichang, extra) =>
Object.freeze(
Object.assign(
{
year,
yue,
shi,
juan,
layer,
kind: 'yuanwen',
witnesses: 1,
layerNote, // ★ 硬性:不许空标
// ⚠ zaichang 是【推演】不是原文 ⇒ 无 juan,不许安卷次。
zaichang: Object.freeze(zaichang.map((z) => Object.freeze(Object.assign({}, z, { kind: 'tuiyan' })))),
},
extra || {},
),
);
// ══════════════════════════════════════════════════════════════════════════
// ★★★ 【impact:影响链】—— 产品线正主「我所在位置的选择【对后世的影响】」
//
// 规约(照 biannian-design.md §2.2 + 本仓史学红线):
// · 只加在 layer==='zhi'|'dao' 的事件上(事没有下游影响链)。本朝 9 制 / 0 道 ⇒ 9 条 impact。
// · 字段:{ reach:'dangchao'|'houshi'|'qiannian', kind:'tuiyan'|'yuanwen', reason(强制),
// to?:[{code?,year?,label(强制)}], reachWhy?, houJu?:[{quote,juan,witnesses,note}] }
// · reason/影响链是【推演】(kind:'tuiyan')。红线:✗ 不许编造「A导致B」的因果;无据宁缺勿造。
//
// ══════════════════════════════════════════════════════════════════════════
// ⚠⚠ 【本朝 impact 的总结论:reach 几乎全是 dangchao —— 这不是偷懒,是本朝的答案】
//
// 本朝 9 制【无一活过创立者】(最长的六筦十三年,随朝亡于23年)。⇒ 9 条 impact 里 8 条 reach='dangchao':
// 它们的下游【就在本朝之内】——不是没做影响链,是【真的没有下游】。这正是班固「餘分閏位」的实证形态:
// 闰=不进位的零头,那一段真实流过但不列入序列,后世接着新以前的汉制往下走。
//
// ★ 唯一一条 reach='qiannian' 是 9年【廢五銖】,而它是【反讽的】:莽废掉的五銖被東漢复行、延续至唐,
// 莽所废者(五銖,约七百年)远寿于莽所立者(莽錢,十四年)。后世影响不是莽建了什么传世,
// 而是莽【废掉的东西被后世复行并延续千年】。
//
// ★★ 全部 impact.kind 一律 'tuiyan':新朝文本【不能引自己的未来】,故本朝无一条 yuanwen 影响。
// grounding(如東漢复五銖)以 houJu 记后世正史原文,witnesses:1(ctext本轮403,单证wikisource,已注明)。
//
// ⚠ 已【按红线拒连】的诱人因果(记此防后人硬补):
// · 王田(9) → 北魏均田:均田自有渊源(计口授田),制度史无确证由王田派生。不写。
// · 六筦(10) → 王安石五均市易:后世论专榷或援莽为比拟,那是【思想史援引】非制度父子相承。不写作因果链。
// · 官制十一公(9):大司馬/徒/空之三公新名起于漢成帝綏和、哀帝元壽(莽秉政时),非新朝始创,
// 東漢所复者是【新朝以前】的三公。不倒果为因。
// ══════════════════════════════════════════════════════════════════════════
// ── 9年 王田:帝制时代最彻底的托古井田土地国有立法,9立12废,三年而潰 ──
const IMP_WANGTIAN = Object.freeze({
reach: 'dangchao',
kind: 'tuiyan',
reason:
'★ 王田(田不得賣、名王田;奴婢名私屬不得賣)是帝制时代最彻底的一次【托古井田】土地国有立法。' +
'它的下游【就在本表内】:始建國四年(12)即弛买卖之禁(见 12年条),行不足三年而潰,未向后世移交任何可运转之制。' +
'⇒ 影响半径=当朝。' +
'★★ 其真正的「后世影响」是【反面的、思想史的】:王莽改制自此成历代【托古改制之失败】的典型;' +
'当世區博已预判其不可行(「井田雖聖王法,其廢久矣…雖堯舜復起,而無百年之漸,弗能行也」,见 12年条 qian)。',
to: Object.freeze([
Object.freeze({ code: 'xin', year: 12, label: '始建國四年弛王田买卖之禁,王田行三年而潰(本表 12年条)' }),
]),
reachWhy: '9立12废,历时不足三年,后世无一朝承其制。半径=当朝。',
refusedLink: '✗ 不连「王田→北魏均田」:均田自有渊源(计口授田),制度史无确证由王田派生。按红线无据不写。',
});
// ── 9年 官制十一公:四輔+三公+四將,随朝而亡,東漢复三公旧制 ──
const IMP_GUANZHI = Object.freeze({
reach: 'dangchao',
kind: 'tuiyan',
reason:
'★ 四輔/三公/四將=十一公 是一朝中枢官制的确立,但随朝而亡:23年新灭,東漢复三公旧制(太尉/司徒/司空),' +
'「十一公」之号无一存留。⇒ 影响半径=当朝。' +
'⚠ 不倒果为因:大司馬/大司徒/大司空 之三公新名起于漢成帝綏和、哀帝元壽间(莽秉政时),非新朝始创;' +
'東漢所复者是这套【新朝以前】的三公,不是新朝叠加的十一公。本条只记:四輔+四將的加叠随新而灭,未入后世。',
to: Object.freeze([
Object.freeze({ code: 'donghan', label: '東漢复三公旧制,四輔四將「十一公」之号随朝而亡' }),
]),
reachWhy: '开国十一公无一活过创立者,23年尽废。半径=当朝。',
});
// ── 9年 廢五銖行莽錢:本朝唯一一条真正的千年链,而它是反讽的 ──
const IMP_WUZHU = Object.freeze({
reach: 'qiannian',
kind: 'tuiyan',
reason:
'★★ 本朝唯一一条真正的千年影响链,且是【反讽的】:莽废行之已久的五銖、屡变币制(原文「數變改不信」「莫肯挾」),' +
'莽錢随朝而亡(14年);東漢建武十六年(40)【复五銖】,五銖此后长期行用,至唐武德四年(621)方废、代以開元通寶。' +
'⇒ 【莽所废者(五銖,约七百年)远寿于莽所立者(莽錢,十四年)】。' +
'本条的后世影响不是莽建了什么传世,而是莽【废掉的东西被后世复行并延续千年】——正是「餘分閏位」的币制形态。',
to: Object.freeze([
Object.freeze({ code: 'donghan', year: 40, label: '東漢建武十六年复行五銖錢' }),
Object.freeze({ code: 'tang', year: 621, label: '五銖行用至唐武德四年废,代以開元通寶(凡约七百年)' }),
]),
reachWhy: '五銖(漢武帝元狩五年-118创)历新之废而复行,至唐621方止,跨约七百年;此为五銖之寿,非莽錢之寿。',
houJu: Object.freeze([
Object.freeze({
quote: '初,王莽亂後,貨幣雜用布、帛、金、粟。是歲,始行五銖錢。〔注:武帝始爲五銖錢,王莽時廢,今始行之。〕',
juan: '《後漢書》卷一下·光武帝紀下(建武十六年,40)',
witnesses: 1,
note: '★ 注文(章懷太子注)明言「王莽時廢,今始行之」——后世正史直接点出这条链。单证(wikisource),ctext本轮403未取。',
}),
Object.freeze({
quote: '高祖即位,仍用隋之五銖錢。武德四年七月,廢五銖錢,行開元通寶錢。',
juan: '《舊唐書》卷四十八·食貨志上',
witnesses: 1,
note: '★ 五銖行用之【终点】。单证(wikisource)。本表 9年廢五銖 layerNote 曾记「五銖行用至何年未核」,此处已核(单证)。',
}),
]),
});
// ── 10年 六筦:国家专榷+官营借贷+平准,站在漢武桑弘羊传统里,但莽制本身随朝亡 ──
const IMP_LIUGUAN = Object.freeze({
reach: 'dangchao',
kind: 'tuiyan',
reason:
'★ 六筦(盐/酒/铁/铸钱/名山大澤税/五均赊贷)是一整套国家专榷+官营借贷+平准。' +
'★★ 它【不始于莽】:盐铁酒专卖、均输平准起于漢武帝、桑弘羊,莽以六筦复而扩之;也【不终于莽】:' +
'国家专榷(尤盐专卖)之传统历代或行或罢,绵延至清末民国。' +
'⇒ 但【莽的六筦本身】随朝而亡(10立,22年议废未发,23年灭,凡十三年——本朝活得最久的制):影响半径=当朝。' +
'它站在一条更长的专榷传统里,但那条传统的寿命【不是莽制的寿命】(既不能说莽创,也不能说莽传),本表不把传统之寿记到莽头上。',
to: Object.freeze([
Object.freeze({ label: '所属之国家专榷传统(漢武桑弘羊创→历代或行或罢→盐专卖延至清末),非莽制本身之寿' }),
]),
reachWhy: '六筦之令历十三年随朝亡;其所属专榷传统前有漢武、后贯千年,但那是传统之寿,非此制之寿。',
refusedLink: '✗ 不连「六筦→王安石五均市易」为制度承续:后世论专榷或以莽相比拟,那是思想史援引/为戒,非父子相承。',
});
// ── 12年 王田得賣:本身即 9年王田制的下游终点,一朝之内的政策回摆 ──
const IMP_WANGTIAN_DEMAI = Object.freeze({
reach: 'dangchao',
kind: 'tuiyan',
reason:
'★ 本条本身就是 9年王田制的【下游终点】:三年一个来回,弛买卖之禁。它没有独立的后世影响,' +
'历史意义是【完成了王田实验的收场】。' +
'⚠ 分寸(本表 layerNote 已明):此令只解禁【买卖】,井田本身未彻底罢(21年孫祿仍骂「造井田」,22年仍在「議除井田」)——' +
'故不写「王田制废止」,只记原文的「得賣」。影响半径=当朝。',
to: Object.freeze([
Object.freeze({ code: 'xin', year: 9, label: '上承始建國元年王田令(本表 9年条),为其三年后之弛禁' }),
]),
reachWhy: '一朝之内的政策回摆,无后世承续。半径=当朝。',
});
// ── 17年 復明六筦:10年六筦的第二次落地并加码(犯者罪至死),同随朝亡 ──
const IMP_FUMING_LIUGUAN = Object.freeze({
reach: 'dangchao',
kind: 'tuiyan',
reason:
'★ 本条是 10年六筦的【第二次落地并加码】(每筦设科条、犯者罪至死)。它与 10年同命:随朝亡于23年,无后世承续。⇒ 影响半径=当朝。' +
'★★ 它比 10年更见「制」之反噬:同一制度第二次落地时带上死刑,「吏民抵罪者浸眾」——执行者先撞上自己执行的科条。' +
'这是制度失败的形态,不是制度传世的形态。',
to: Object.freeze([
Object.freeze({ code: 'xin', year: 10, label: '重申并加码 10年六筦之令(本表 10年条),同随朝而亡' }),
]),
reachWhy: '六筦复明后仅六年新亡,无一朝承之。半径=当朝。',
});
// ── 19年 六歲一改元:本表最短命的制,规定的未来一格没走到 ──
const IMP_GAIYUAN = Object.freeze({
reach: 'dangchao',
kind: 'tuiyan',
reason:
'★ 这是本表最短命的「制」:六岁一改元、预颁天下的改元表,规定的未来【一格都没走到】——' +
'莽死于地皇四年(23),「地皇三十年」「王光上戊」永未到来(见顶部 NIANHAO_NOTE)。' +
'⇒ 影响半径=当朝,且严格说【不足当朝】:它规定的是未来,而未来没有发生。' +
'★★ 后世反其道:预先按曆排定年号之法无一朝承袭;历代年号仍是【因祥瑞灾异而改】的旧法。原文记时人反应「眾皆笑之」——它当时就没被当真。',
to: Object.freeze([
Object.freeze({ label: '预颁改元表之法后世无一承袭;历代年号仍循「因祥瑞灾异而改」的旧例' }),
]),
reachWhy: '所定改元表随莽死立废,规定的未来一格未行。半径=当朝(且未来未至)。',
});
// ── 20年 官号军化:全国文官一次性军号化,位阶名号滥发即贬值的标本 ──
const IMP_GUANHAO = Object.freeze({
reach: 'dangchao',
kind: 'tuiyan',
reason:
'★ 全国文官一次性军号化(州牧→大將軍,郡→偏將軍,县宰→校尉;大司馬置五人)。三年后随朝而亡,后世无一承之。⇒ 影响半径=当朝。' +
'★★ 它是本表的靶心,可作一条【标本】观察(仍标 tuiyan,非史家明训):一朝把稀缺的位阶名号【普发】——' +
'大司馬一发五份、人人升号——名号即贬值,「所有人的头衔都升,等于没人升」。这不是传到后世的制度,是【位阶通货膨胀】的标本。本表不把它连成因果链,只作标本记。',
to: Object.freeze([
Object.freeze({ label: '军号化之制随朝而亡;作为「位阶名号滥发即贬值」之标本(观察,非史家明训)' }),
]),
reachWhy: '20年立,23年亡,历三年,无后世承续。半径=当朝。',
});
// ── 22年 总废除(未发):一次从未生效的总废除,历史效力=零 ──
const IMP_ZONG_FEICHU = Object.freeze({
reach: 'dangchao',
kind: 'tuiyan',
weiFaImpact: true,
reason:
'★★ 本条 layer 标「制」而 weiFa:true——一次【从未生效】的总废除(井田/奴婢/山澤/六筦全废,尽收即位以来不便民之诏)。' +
'「待見未發」:诏书写好,使者没出门,刘伯升已起兵。⇒ 历史效力=【零】,影响半径无从谈起,勉强记作当朝且未发。' +
'★ 意义全在【反证】:莽十五年里唯一一次全面认错,卡在「等一次召见」上,随即新亡。一个从未生效的制不可能有后世影响——这本身就是「餘分閏位」最干净的注脚。',
to: Object.freeze([
Object.freeze({ label: '待見未發,从未颁行;历史效力为零,无下游' }),
]),
reachWhy: '诏成而使未发(weiFa),未生效即新亡。无半径可言,记为当朝未发。',
});
export const CHAO_SHI = Object.freeze([
// ── 9 ──
S(9, '正月', '始建國元年正月朔,莽帥公侯卿士奉皇太后璽韍,上太皇太后,順符命,去漢號焉。', J_ZHONG,
'shi',
'★「去漢號」是一次【改朝】的动作本身 —— 一次废立,一个国号的更替。按判据这是「事」:' +
'五十年后(59年)汉已复,此事的直接效力为零。⇒ 事。⚠ 不拔高成「制」:改国号不是建制度。',
[
{ wei: '公侯卿士(十一公一层)', ru: '★ 你【在队列里】。原文「莽帥公侯卿士奉皇太后璽韍」—— 你就是捧玺的那一批人。不出席不行。' },
{ wei: '郡守/大尹', ru: '你要在本郡宣布国号变了,收旧印发新印。★ 若你姓劉,见同年那条:这一年你被调离郡守。' },
{ wei: '县宰/斗食小吏', ru: '★ 你要把治下所有文书、封检、符传上的「漢」字改掉。这是一个人一个人手抄的活。' },
{ wei: '宗室(劉姓)', ru: '★★ 你什么都没做,但你的姓变成了处分。见同年「諸劉為郡守,皆徙為諫大夫」。' },
]),
S(9, '正月',
'莽乃策命孺子曰:「咨爾嬰,昔皇天右乃太祖,歷世十二,享國二百一十載,曆數在于予躬。…封爾為定安公,永為新室賓。」' +
'…讀策畢,莽親執孺子手,流涕歔欷,曰:「昔周公攝位,終得復子明辟,今予獨迫皇天威命,不得如意!」哀歎良久。' +
'中傅將孺子下殿,北面而稱臣。百僚陪位,莫不感動。', J_ZHONG,
'shi', '★ 一次废立 —— 判据里明写「一次废立」=事。⇒ 事。',
[
{ wei: '百僚(陪位者)', ru: '★★★ 原文:「百僚陪位,莫不感動」。你的差事就是【站在那里被感动】。这一天你唯一的职务动作是【在场】,而且史官把你被感动这件事记下来了。' },
{ wei: '中傅', ru: '你要亲手把孺子从殿上带下来,让他北面称臣。★ 这个动作由一个具体的人做 —— 那天那个人是你。' },
{ wei: '定安公国官吏', ru: '★ 你被派去平原、安德、漯陰、鬲、重丘那一万户,看着一个孩子长大 —— 「敕阿乳母不得與語,常在四壁中,至於長大,不能名六畜」。你是那四壁的一部分。' },
],
{ pang: '★★ 「不能名六畜」:孺子嬰长大后不认得六种家畜。这是本表最不该被读快的五个字。' }),
S(9, null,
'今更名天下田曰『王田』,奴婢曰『私屬』,皆不得賣買。其男口不盈八,而田過一井者,分餘田予九族鄰里鄉黨。' +
'故無田,今當受田者,如制度。敢有非井田聖制,無法惑眾者,投諸四裔,以禦魑魅。', J_ZHONG,
'zhi',
'★ 全国土地与奴婢的法权重定 —— 是【法】不是【仗】,属「制度的确立」。⇒ 制。' +
'⚠ 50年测试:【不及格】。9年立,12年即废(见 12年条),活了三年。' +
'本表仍标「制」的理由见本节顶部注释:layer 分种类不分成败。★ 但请记住它三年就死了。',
[
{ wei: '三公/四輔', ru: '你要把这道诏令变成可执行的条文 —— 而原文没给细则。' },
{ wei: '郡守/大尹', ru: '★ 你要在本郡实测田亩、认定「男口不盈八而田過一井」者,再把余田分给九族邻里。你手上没有地籍。' },
{ wei: '县宰', ru: '★★ 你是真正要下田的人。分田分不平,「投諸四裔,以禦魑魅」是写给你的。' },
{ wei: '斗食小吏', ru: '★★★ 你要挨家挨户去说:地不许卖了,人也不许卖了。买卖双方都恨你。三年后(12年)你还要挨家去说:现在又能卖了。' },
{ wei: '豪民/大家', ru: '你是这道诏令的靶子(「豪民侵陵,分田劫假」)。★ 你也是三年后让它废掉的力量。' },
{ wei: '奴婢', ru: '★ 你改叫「私屬」,不得买卖。⇒ 你的身份没变,你的【名字】变了。三年后名字变回去。' },
],
{ impact: IMP_WANGTIAN }),
S(9, null, '又按金匱,輔臣皆封拜。…是為四輔,位上公。…是為三公。…是為四將。凡十一公。', J_ZHONG,
'zhi',
'★ 一朝中枢官制的确立(四輔/三公/四將=十一公,及其下卿大夫序列)—— 制度的确立。⇒ 制。' +
'⚠ 50年测试:【不及格】。23年随朝而亡,东汉复三公旧制,十一公无一存留。' +
'★ 标「制」是因为它是【官制】;标完必须承认它没活过它的创立者。',
[
{ wei: '开国十一公', ru: '★ 你的位子是【金匱】给的 —— 一个铜匣子里的名单。不是察举,不是资历,是匣子。' },
{ wei: '卿大夫/侍中/尚書', ru: '原文:「是日,封拜卿大夫、侍中、尚書官凡數百人」。★ 你是那几百分之一,一天之内。' },
{ wei: '布衣', ru: '★★★ 见 9年王興(城門令史)、王盛(賣餅)。「徑從布衣登用」。这一年,卖饼的成了十一公之一。你的名字对不对得上符命,比你这辈子做过什么都重要。' },
{ wei: '劉姓郡守', ru: '★★ 「諸劉為郡守,皆徙為諫大夫」—— 你从治一郡(有兵有粮有印)变成在朝廷提意见。同一天,同一道命令。你的姓就是你的考绩。' },
],
{ impact: IMP_GUANZHI }),
S(9, null, '是時百姓便安漢五銖錢,以莽錢大小兩行難知,又數變改不信,皆私以五銖錢市買。訛言大錢當罷,莫肯挾。', J_ZHONG,
'zhi',
'★ 货币制度的更替(废五銖、行莽錢)—— 属制度的确立/废除。⇒ 制。' +
'⚠ 50年测试:【不及格】。莽錢随朝而亡,东汉复五銖。' +
'★★ 反讽记在这里:被废的【五銖】此后仍长期行用,废它的【莽錢】活了十四年。' +
'(⚠ 五銖行用至何年,本表【未核】—— 不拿现代年表替原文。)',
[
{ wei: '納言(掌货)', ru: '你要让一个没人肯用的钱流通起来。' },
{ wei: '县宰/市官', ru: '★ 你要抓「私以五銖錢市買」的人 —— 而那是【百姓全体】。' },
{ wei: '斗食小吏', ru: '★★ 你自己的俸禄也是用这个钱发的(若发得出来 —— 见 17年「吏終不得祿」)。你既要禁它,又要花它。' },
{ wei: '百姓', ru: '★ 你「莫肯挾」—— 不肯拿。这是全传里最早的、也最沉默的一次抵抗。' },
],
{ impact: IMP_WUZHU }),
// ── 10 ──
S(10, '二月', '五威將帥七十二人還奏事,漢諸侯王為公者,悉上璽綬為民,無違命者。封將為子,帥為男。', J_ZHONG,
'shi', '★ 一次性的削爵(汉诸侯王一律为民)—— 「一次废立」的批量版。⇒ 事。⚠ 不拔高:这不是建立一个制度,是执行一次清除。',
[
{ wei: '漢諸侯王(已降为公)', ru: '★★★ 「悉上璽綬【為民】」。你从王,到公,到民 —— 两步,几个月。而原文只给了你六个字:【無違命者】。' },
{ wei: '五威將/帥(七十二人)', ru: '★ 你就是去收玺绶的那个人。收完,「封將為子,帥為男」—— 你收了一个王的印,换来一个子爵。' },
{ wei: '郡县吏', ru: '你要给这些新「民」上户籍。' },
]),
S(10, '二月',
'初設六筦之令。命縣官酤酒,賣鹽鐵器,鑄錢,諸采取名山大澤眾物者稅之。又令市官收賤賣貴,賒貸予民,收息百月三。' +
'犧和置酒士,郡一人,乘傳督酒利。', J_ZHONG,
'zhi',
'★ 全国专卖 + 官营借贷 + 平准,一整套经济制度的确立。⇒ 制。' +
'⚠ 50年测试:【不及格】。10年立,23年亡(22年一度议废而未发),共十三年,随朝俱灭。' +
'★ 它是本朝活得最久的制度 —— 十三年。这就是这一朝的「最久」。',
[
{ wei: '犧和(掌财)', ru: '★ 六筦是你的部。21年孫祿当廷点名:「犧和魯匡設六筦,以窮工商」,请诛。结果魯匡左遷五原卒正。⇒ 制度的设计者被拿去平民愤。' },
{ wei: '郡一人的「酒士」', ru: '★★ 一个郡派一个人,「乘傳督酒利」—— 你的全部职务是【坐着驿车去查酒的利润】。这个官是为这道令新造的。' },
{ wei: '市官', ru: '你要「收賤賣貴」(低买高卖)还要「賒貸予民」(放贷),月息三分。★ 你既是市场也是钱庄,还是官。' },
{ wei: '县宰', ru: '★ 酤酒、卖盐铁、铸钱现在都是你的活。你是县令,也是酒厂、盐铁店和造币厂。' },
{ wei: '工商', ru: '★★ 「以窮工商」—— 这四个字是十一年后一个叫孫祿的人在朝堂上说的。你是被穷的那个。' },
{ wei: '斗食小吏', ru: '★★★ 17年「每一筦下,為設科條防禁,【犯者罪至死】,吏民抵罪者浸眾」。你是执行科条的人,也是「吏民抵罪」里的【吏】。' },
],
{ impact: IMP_LIUGUAN }),
S(10, '十二月',
'更名匈奴單于曰降奴服于。莽曰:「降奴服于知威侮五行,背畔四條,侵犯西域,廷及邊垂,為元元害,罪當夷滅。' +
'命遣立國將軍孫建等凡十二將,十道並出,共行皇天之威,罰奸虜之罪。」', J_ZHONG,
'shi',
'★ 一场仗(十二将十道并出)+ 一次改名。⇒ 事。' +
'⚠⚠ 【绝不拔高】:这是本表最该守住的一条。动员极大、边郡打空、匈奴叛离,死人极多 —— ' +
'但判据说得清楚:「一场仗就是【事】,哪怕死了十万人」。五十年后此役无一存效。⇒ 事。',
[
{ wei: '立國將軍(十一公)', ru: '★ 孫建领十二将。他 15年死在任上 —— 这仗没打完他就死了。' },
{ wei: '边郡大尹/太守', ru: '★★ 你要供这场仗的粮。同年「禁民不得挾弩鎧,徙西海」,你还要办这个迁徙。' },
{ wei: '斗食小吏', ru: '★★★ 你【在场】:十二将十道并出,每一道的粮草要人一车一车推。你不上阵,你死在路上。' },
{ wei: '匈奴單于', ru: '★ 你的名号被改成【降奴服于】。「奴」「降」两个字直接写进你的称号。⇒ 位阶也可以是一种羞辱,只要写的人愿意。' },
{ wei: '高句驪侯騶', ru: '★ 你没反 —— 「貉人犯法,不從騶起」(嚴尤语)。但你还是被杀了。你是被路过的。' },
]),
S(10, null,
'莽以詐立,心疑大臣怨謗,欲震威以懼下,因是發怒曰:「黃皇室主天下母,此何謂也!」收捕尋。尋亡,豐自殺。' +
'…辭連國師公歆子…棻…泳,大司空邑弟…奇,及歆門人…丁隆等,牽引公卿黨親列侯以下,死者數百人。', J_ZHONG,
'shi', '★ 一个人的死(甄豐)+ 一次株连(数百人)。判据明写「一个人的死」=事。⇒ 事。',
[
{ wei: '十一公', ru: '★★ 甄豐是十一公之一 —— 自杀。而國師劉歆、大司空王邑【也在这案子里】(儿子、弟弟被牵进去),两人稳坐原位。⇒ 到了这一层,死的是你的亲属,不是你的位置。' },
{ wei: '公卿党亲列侯以下', ru: '★★★ 「牽引公卿黨親列侯以下,死者數百人」。你不必做任何事 —— 你只要【认识】其中一个人。' },
{ wei: '劉棻/劉泳(國師之子)', ru: '★ 你父亲是四輔之一,位上公。你死了,他没事。十三年后(23年)他因为「怨莽殺其三子」而谋反自杀。' },
{ wei: '作符命者', ru: '★★ 甄尋伪造符命而死。⇒ 而符命【正是把甄豐和莽自己抬上去的那套东西】。这一年起,同一件工具,用的人死。' },
]),
// ── 11 ──
S(11, null, '三年,莽曰:「百官改更,職事分移,律令儀法,未及悉定,且因漢律令儀法以從事。」', J_ZHONG,
'shi',
'★ 一道过渡令,而非制度的确立/废除 —— 它恰恰是【暂缓】立制。⇒ 事。' +
'⚠ 不拔高成「制」:它宣布的是「新制还没编好,先接着用汉的」。',
[
{ wei: '所有官吏', ru: '★★★ 这条最像本产品要的东西:新朝立了三年,官全换了名,【律令还是汉的】。你顶着新官名,翻着汉律办事。' },
{ wei: '獄吏/決曹', ru: '★★ 你要按汉律判人,判词上署新朝的官。⇒ 你什么都没变,天花板全变了 —— 而且天花板换了名字之后,地板还是旧的。' },
]),
// ── 12 ──
S(12, null, '莽知民怨,乃下書曰:「諸名食王田,皆得賣之,勿拘以法。犯私買賣庶人者,且一切勿治。」', J_ZHONG,
'zhi',
'★ 一个制度的【废除】—— 判据明写「制度的确立/废除」=制。⇒ 制。' +
'★ 它废掉的是 9年那条 —— 活了三年。' +
'⚠ 注意:这道令只解禁【买卖】,井田本身未彻底罢(21年孫祿仍骂「造井田,使民棄土業」,' +
'22年仍在「議除井田」)。⇒ 本表不写「王田制废止」,只写原文说的:【得賣】。',
[
{ wei: '斗食小吏', ru: '★★★ 三年前你挨家去说「地不许卖了」,现在你挨家去说「又能卖了」。同一批人,同一张嘴。⇒ 这个位阶的全部内容就是【承受反复】。' },
{ wei: '县宰', ru: '★ 三年里按 9年令处置过的案子,现在「且一切勿治」—— 那些已经被「投諸四裔」的人怎么办,原文没说。' },
{ wei: '曾按新法分田者', ru: '★★ 你分到的余田,现在可以卖了 —— 也就是可以被买走了。⇒ 三年一个来回,回到原点,只是中间死了些人。' },
],
{ qian:
'★ 前情:區博谏曰「井田雖聖王法,其廢久矣…今欲違民心,追復千載絕跡,雖堯舜復起,而無百年之漸,弗能行也。' +
'天下初定,萬民新附,誠未可施行。」莽【听了】。这是全传里少见的一次听谏。',
impact: IMP_WANGTIAN_DEMAI }),
// ── 13 ──
S(13, '二月', '五年二月,文母皇太后崩,葬渭陵,與元帝合而溝絕之。立廟於長安,新室世世獻祭。元帝配食,坐於床下。莽為太后服喪三年。', J_ZHONG,
'shi', '★ 一个人的死。⇒ 事。',
[
{ wei: '奉常/宗伯', ru: '★★ 你要办一件史无前例的事:把太后跟元帝【合葬,中间挖一条沟隔开】。你要设计这条沟。' },
{ wei: '陪祭的公卿', ru: '★ 「元帝配食,坐於床下」—— 你要看着汉元帝的牌位坐在床底下受祭。你不能有表情。' },
{ wei: '百官', ru: '莽服丧三年,你跟着。' },
],
{ pang:
'★★★ 这一条是 BANGU_SIWEI 的【主证】,别当普通条目读:' +
'文母皇太后=元后王政君,【漢】的太后、莽的姑母。班固给她【崩】。' +
'八年后(21年)莽自己的皇后死,班固给【死】。同一卷、同一支笔、隔八年。' +
'⇒ 「崩」这个字就在班固手边。他给漢的女人,不给新的女人。' +
'⚠ 另:本条末句「莽為太后服喪【三年】」是个伪纪年锚点,见 REJECTED_ANCHORS。' }),
// ── 16 ──
S(16, null,
'焉耆詐降,伏兵擊駿等,皆死。欽、封後到,襲擊老弱,從車師還入塞。莽拜欽為填外將軍,封劋胡子,何封為集胡男。西域自此絕。', J_ZHONG,
'shi',
'★ 一场仗的结局(西域都護覆没、西域断绝)。⇒ 事。' +
'⚠ 不拔高:「西域自此絕」听着像一个时代的终结,但判据只问「五十年后还在起作用吗」—— ' +
'此绝非永久(东汉复通西域)。⇒ 事。(⚠ 复通于何年,本表未核,不写。)',
[
{ wei: '西域都護/戊己校尉', ru: '★★ 王駿等「皆死」。你这个位置在这一年【物理消失】—— 不是免,不是贬,是【没有了】。' },
{ wei: '郭欽/何封', ru: '★★★ 你没赶上仗,晚到了,于是你「襲擊老弱」,然后回塞。莽拜你【填外將軍】,封【劋胡子】。⇒ 打死老弱得爵。同一场败仗,死的人什么也没有,晚到的人封侯。' },
{ wei: '屯田吏卒', ru: '★ 你在西域屯田。「西域自此絕」四个字之后,原文再没提过你。' },
]),
// ── 17 ──
S(17, null,
'是歲,復明六筦之令。每一筦下,為設科條防禁,犯者罪至死,吏民抵罪者浸眾。' +
'又一切調上公以下諸有奴婢者,率一口出錢三千六百,天下愈愁,盜賊起。納言馮常以六筦諫,莽大怒,免常官。', J_ZHONG,
'zhi',
'★ 制度的【重申与加码】(每筦设科条、犯者罪至死)—— 属制度变更。⇒ 制。' +
'⚠ 50年测试:【不及格】,随 10年那套一起亡于 23年。' +
'★ 但这条比 10年那条更该记:它是【同一个制度第二次落地】,而这次带死刑。',
[
{ wei: '納言馮常', ru: '★★★ 你谏了六筦。「莽大怒,免常官」。⇒ 你的位置就是「納言」—— 出纳王命、进言。你做了你这个位置该做的事,你因此丢了这个位置。' },
{ wei: '上公以下有奴婢者', ru: '★ 一口出錢三千六百。你越高,你的奴婢越多,你交得越多。这是本朝少见的【累进】。' },
{ wei: '吏', ru: '★★ 「犯者罪至死,吏民抵罪者浸眾」—— 「吏民」,吏在前。执行科条的人先撞上科条。' },
{ wei: '斗食小吏', ru: '★★★ 同年:「天下吏以不得奉祿,並為姦利」—— 你领不到俸禄,你只能贪;同年又设「執法左右刺姦」来抓你。⇒ 不发你钱、逼你贪、再设官抓你,三步都在同一年。' },
],
{ impact: IMP_FUMING_LIUGUAN }),
// ── 19 ──
S(19, '春', '六年春,莽見盜賊多,乃令太史推三萬六千歲曆紀,六歲一改元,布天下。', J_XIA,
'zhi',
'★ 改元规则的制度化(六岁一改元,且【预先颁布】)—— 一个制度的确立。⇒ 制。' +
'⚠ 50年测试:【不及格】。莽死于地皇四年,「地皇三十年」「王光上戊」永未到来。' +
'★ 这是本表最短命的「制」:它规定的未来,一格都没走到。见顶部 NIANHAO_NOTE。',
[
{ wei: '太史', ru: '★★ 你要推算三万六千年的历。你交出去的那张表,四年后作废。' },
{ wei: '所有官吏', ru: '★ 「布天下」=未来的年号表提前发给你了。你手里有一份写到几百年后的日历。' },
{ wei: '百姓', ru: '★★★ 「欲以誑燿百姓,銷解盜賊。【眾皆笑之】。」—— 你是「眾」。你笑了。班固把这三个字记下来了。' },
],
{ impact: IMP_GAIYUAN }),
// ── 20 ──
S(20, null,
'莽見四方盜賊多,復欲厭之…於是置前後左右中大司馬之位,賜諸州牧號為大將軍,郡卒正、連帥、大尹為偏將軍,屬令長裨將軍,縣宰為校尉。', J_XIA,
'zhi',
'★ 全国文官系统一次性军号化(州牧→大將軍,郡→偏將軍,县→校尉)—— 官制变更。⇒ 制。' +
'⚠ 50年测试:【不及格】,三年后随朝而亡。' +
'★ 标「制」是因为它动的是【全国官阶的名号体系】,不是一次任命。',
[
{ wei: '大司馬', ru: '★ 本来一个,现在【五个】(前后左右中)。⇒ 位阶靠稀缺立着,一朝发五份,它就不值钱了。' },
{ wei: '州牧', ru: '★★ 你早上还是州牧,晚上是「大將軍」。你的兵、你的粮、你的权【一样没多】。多的是四个字。' },
{ wei: '县宰', ru: '★★★ 你现在是「校尉」。你还是那个县。你手里还是那些人。' },
{ wei: '斗食小吏', ru: '★ 你的上司全部改叫将军了。你还是斗食。⇒ 这一条是整个产品的靶心:【所有人的头衔都升了,等于没人升】。' },
],
{ pang:
'★ 同年前情:「內設大將,外置大司馬五人,大將軍二十五人,偏將軍百二十五人,裨將軍千二百五十人,' +
'校尉萬二千五百人,司馬三萬七千五百人…士千三百五十萬人」—— 这是照黃帝的数字排的,不是照人口排的。',
impact: IMP_GUANHAO }),
// ── 21 ──
S(21, null, '是月,莽妻死,諡曰孝睦皇后,葬渭陵長壽園西,令永侍文母,名陵曰億年。初莽妻以莽數殺其子,涕泣失明,莽令太子臨居中養焉。', J_XIA,
'shi', '★ 一个人的死。⇒ 事。',
[
{ wei: '奉常/宗伯', ru: '你办丧。★ 陵名「億年」—— 两年后新亡。' },
{ wei: '太子(王臨)', ru: '★★★ 你被派去侍奉哭瞎了的母亲。你在那里跟你父亲的侍者原碧私通,事发,谋杀你父亲,事败,自杀。⇒ 这道派令是你的死刑。' },
],
{ pang:
'★★★ 本条是 BANGU_SIWEI 的【主证之二】,与 13年那条配对读:' +
'「莽妻【死】,諡曰孝睦皇后」—— 她有【皇后】的谥,得的是【死】这个字。' +
'而八年前,漢的太后得【崩】。同一卷、同一支笔。' +
'★ 另记:「莽妻以莽數殺其子,涕泣失明」—— 她哭瞎,是因为丈夫一再杀她的儿子。' +
'莽四子:宇、獲、安、臨(「二子前誅死」,9年原文;安荒忽;臨自杀)。' +
'⇒ 位阶最高的那个家,儿子是被父亲一个个杀掉的。' }),
S(21, null, '莽怒,使虎賁扶祿出。然頗采其言,左遷魯匡為五原卒正,以百姓怨非故。六筦非匡所獨造,莽厭眾意而出之。', J_XIA,
'shi', '★ 一个人的贬。⇒ 事。',
[
{ wei: '犧和魯匡', ru: '★★★ 「六筦【非匡所獨造】,莽【厭眾意】而出之」—— 班固逐字写明:他不是主谋,他是【拿去平众怒的】。你设计了制度,制度招了恨,于是你被交出去。' },
{ wei: '孫祿(谏者)', ru: '★ 你当廷点名要诛太傅、國師、崔發、魯匡。结果:你被虎贲架出去,而四个人里【只有魯匡】倒了 —— 官最小的那个。' },
{ wei: '五原卒正', ru: '★ 你原来的位子给了一个刚被贬的九卿。' },
]),
// ── 22 ──
S(22, null, '是月,赤眉殺太師犧仲景尚。關東人相食。', J_XIA,
'shi', '★ 一个人的死 + 一场饥荒。⇒ 事。',
[
{ wei: '太師犧仲', ru: '★ 你是太師属下的「犧仲」(祭祀官)被派去打赤眉。⇒ 拿祭祀官去打仗,你死了。' },
{ wei: '關東百姓', ru: '★★★ 「關東人相食」。五个字。班固没有多写。' },
]),
S(22, '四月',
'四月,遣太師王匡、更始將軍廉丹東,祖都門外,天大雨,霑衣止。長老歎曰:「是為泣軍!」' +
'…太師、更始合將銳士十餘萬人,所過放縱。東方為之語曰:「寧逢赤眉,不逢太師!太師尚可,更始殺我!」', J_XIA,
'shi', '★ 一次出兵。⇒ 事。',
[
{ wei: '太師/更始將軍(十一公)', ru: '★★ 你带十余万锐士出征。东方的民谣把你排在赤眉之后:「寧逢赤眉,不逢太師」。⇒ 你是官军,你比贼更可怕。' },
{ wei: '十餘萬銳士', ru: '★ 「所過放縱」。你就是放纵本身。' },
{ wei: '東方百姓', ru: '★★★ 你编了那句民谣。⇒ 这是本表里【最底下的位阶第一次开口】,而它开口的方式是给两个公排序:太師尚可,更始杀我。' },
{ wei: '長老', ru: '★ 你看见出师那天大雨湿衣,说了两个字:泣軍。班固记下来了。⇒ 你没有官,但你有一句话进了正史。' },
]),
S(22, null,
'莽知天下潰畔,事窮計迫,乃議遣風俗大夫司國憲等分行天下,除井田奴婢山澤六筦之禁,即位以來詔令不便於民者皆收還之。' +
'待見未發,會世祖與兄齊武王伯升…帥舂陵子弟數千人…合攻拔棘陽。', J_XIA,
'zhi',
'★★ 一次【总废除】的动议 —— 井田、奴婢、山澤、六筦,即位以来所有不便于民的诏令全收回。' +
'这是「制度的废除」,属制。⇒ 制。' +
'⚠⚠ 但它【没有发生】:「待見未發」—— 使者在等召见,一直没出发。' +
'⇒ 本表标「制」并【必须】同时标 weiFa:true。这是一条【未遂的制】。',
[
{ wei: '風俗大夫司國憲等', ru: '★★★ 你被任命去废掉整个新朝的改革,你在等召见,你【一直没等到】。你的差事就是【等】。' },
{ wei: '所有被这些法折磨了十三年的人', ru: '★★★ 赦免写好了。它在宫里。它没出来。' },
],
{ weiFa: true,
pang:
'★★★ 本表最该被读慢的一条。莽终于全想通了 —— 井田、奴婢、山澤、六筦,全废,' +
'「即位以來詔令不便於民者皆收還之」,即他承认自己十三年全错。' +
'然后:【待見未發】。诏书写好了,使者没出门,因为刘伯升那时起兵了。' +
'⇒ 十五年里唯一一次全面认错,卡在【等一次召见】上。' +
'★ 这一条 layer 标「制」而 weiFa:true —— 一个从未生效的制度废除:' +
'它的历史效力是零,它的产品价值是全部。',
impact: IMP_ZONG_FEICHU }),
// ── 23 ──
S(23, '三月', '三月辛巳朔,平林、新巿、下江兵將王常、朱鮪等共立聖公為帝,改年為更始元年,拜置百官。', J_XIA,
'shi', '★ 一次拥立。⇒ 事。',
[
{ wei: '新朝百官', ru: '★★ 另一套百官在同一片天下上被「拜置」了。⇒ 从这天起,同一个位子有两个人坐 —— 一个在长安,一个在宛。你得选。' },
{ wei: '郡守/县宰', ru: '★★★ 你要决定给谁上计、给谁交粮。这个决定没有正确答案,只有【时机】。降早了是叛,降晚了是死。' },
],
{ pang:
'★ 这一句是全传【唯一】出现「更始元年」的地方,而它是记【刘玄之所为】,不是班固改用更始纪年 —— ' +
'班固纪年行用莽的年号到底(见顶部 CHRONOLOGY_CHECKS)。' }),
S(23, '六月',
'六月,邑與司徒尋發雒陽,欲至宛,道出潁川,過昆陽。…二公縱兵圍昆陽。嚴尤曰:「稱尊號者在宛下,宜亟進。彼破,諸城自定矣。」' +
'邑曰:「百萬之師,所過當滅,今屠此城,喋血而進,前歌後舞,顧不快邪!」遂圍城數十重。城中請降,不許。' +
'…漢兵乘勝殺尋。…邑走,軍亂。天風蜚瓦,雨如注水,大眾崩壞號謼,虎豹股栗,士卒奔走,各還歸其郡。', J_XIA,
'shi',
'★★ 一场仗 + 一个人的死(王尋)。' +
'⚠⚠ 昆陽是本表【最容易被拔高】的一条:它常被说成「决定了此后两百年」。' +
'但判据只问一件事:五十年后它还在起作用吗?—— 一场战役的胜负不「起作用」,它只是发生了。' +
'它没有确立或废除任何制度。⇒【事】。' +
'★ 规模不改变它的 layer。判据原话:「一场仗就是事,哪怕死了十万人」。',
[
{ wei: '大司徒/大司空(十一公)', ru: '★★ 二公亲临。一个死(尋),一个走(邑)。⇒ 同一层,同一场,两个结局。' },
{ wei: '嚴尤', ru: '★★★ 你说了两次对的话(宜亟进宛;围城为之阙)。两次都不听。⇒ 而你 19年已经被免 —— 说对话的人不在决策的格子里。' },
{ wei: '四十二萬郡兵', ru: '★★★ 「州郡各選精兵,牧守自將,定會者四十二萬人」。你是牧守亲自带来的精兵。你的结局:「士卒奔走,各還歸其郡」。⇒ 你走了几千里来,又走回去。' },
{ wei: '昆陽城中吏民', ru: '★ 你请降。「不許」。⇒ 你想投降都不行 —— 因为围城的人想「屠此城,喋血而進,前歌後舞」。' },
{ wei: '郡守/牧', ru: '★★ 「牧守自將」—— 你必须亲自带兵。⇒ 20年把你改叫「大將軍」(见 20年条),三年后你真的要去当将军了。那四个字最后是要兑现的。' },
]),
S(23, '七月',
'七月,伋與邯俱告,莽遣使者分召忠等。…莽令鹊惲責問,皆服。中黃門各拔刃將忠等送廬,忠拔劍欲自刎,' +
'侍中王望傳言大司馬反,黃門持劍共格殺之。…劉歆、王涉皆自殺。莽以二人骨肉舊臣,惡其內潰,故隱其誅。', J_XIA,
'shi', '★ 一次谋反 + 三个人的死。⇒ 事。',
[
{ wei: '大司馬/國師/衛將軍(十一公之三)', ru: '★★★ 三个公一起谋反。⇒ 到了最高一层,出路也只剩谋反。而三人都失败:一个被格杀,两个自杀。' },
{ wei: '孫伋(司中大贅起武侯)', ru: '★ 你被拉进谋反,回家「顏色變,不能食」,你妻子问出来了,告诉她弟弟,她弟弟要去告。你只好抢先去告。⇒ 你是靠脸色泄的密。' },
{ wei: '伊休侯劉疊(國師之子)', ru: '★★ 你是侍中五官中郎將,「莽素愛之」。你父亲谋反【没告诉你】。结果:「但免侍中中郎將,更為中散大夫」—— 只免官。⇒ 你父亲不告诉你,救了你的命。' },
{ wei: '大司馬官屬吏士', ru: '★★★ 「下書赦大司馬官屬吏士為忠所詿誤,謀反未發覺者」。你在大司馬府当差,你什么都不知道,你需要一道【赦令】才能活。⇒ 这就是「在场」的字面意思。' },
{ wei: '郎吏(省中)', ru: '★ 「省中相驚傳,勒兵至郎署,皆拔刃張弩」。更始將軍史諶来告诉你:大司馬有狂病,已诛。你「弛兵」。⇒ 你被骗了,你活下来了。' },
]),
S(23, '十月',
'十月戊申朔,兵從宣平城門入…三日庚戌,晨旦明,群臣扶掖莽,自前殿南下椒除,西出白虎門,和新公王揖奉車待門外。' +
'莽就車,之漸臺,欲阻池水,猶抱持符命、威斗,公卿大夫、侍中、黃門郎從官尚千餘人隨之。…商人杜吳殺莽,取其綬。', J_XIA,
'shi',
'★ 一个人的死 —— 而这个人的死【就是这一朝的终点】。⇒ 事。' +
'⚠ 不拔高成「道」:新亡不改变此后千年的任何制度,汉复而已。',
[
{ wei: '和新公王揖', ru: '★ 你是公。你的差事:在白虎门外【等着,扶他上车】。这是你在正史里的最后一个动作。' },
{ wei: '公卿大夫/侍中/黃門郎', ru: '★★★ 「從官尚千餘人隨之」。一千多人跟着他上渐台。⇒ 台上没有出路,那是个水中的台子。你跟去,是因为你的位阶就是【跟着】。' },
{ wei: '王邑(大司馬,十一公)', ru: '★★ 「王邑晝夜戰,罷極,士死傷略盡,馳入宮,間關至漸臺,見其子侍中睦解衣冠欲逃,【邑叱之令還】,父子共守莽。」⇒ 他儿子要脱掉官服跑,他喝住他,让他把衣冠穿回去,父子一起死在台上。★ 那身衣冠就是位阶。他儿子想脱的,就是那个。' },
{ wei: '商人杜吳', ru: '★★★ 杀天子的是一个【商人】。「杜吳殺莽,取其綬」—— 他先拿了绶(印带)。而后校尉公賓就问他绶的主人在哪,他【说不出来】(原文:「見吳問綬主所在」)。⇒ 他拿了那根带子,不知道那是谁的。位阶在拿走它的人眼里什么都不是。' },
{ wei: '斗食小吏', ru: '★ 你不在渐台。你在长安城里。十月三日之后,你的官名作废了,你要去找新朝廷上计。' },
],
{ pang:
'★★ 「猶抱持符命、威斗」—— 他抱着符命死。' +
'而符命正是把他抬上去的东西(9年金匱)、把卖饼的抬成公的东西(9年王盛)、' +
'把甄豐父子杀掉的东西(10年)。⇒ 十五年首尾,抱的是同一样东西。' }),
]);
// ══════════════════════════════════════════════════════════════════════════
// ═══════════════════════ 三、统一 export ═══════════════════════
// ★ 名字一个字不改。已有的 CHAO / EMPERORS 等【原样保留】,此处只做映射。
// ══════════════════════════════════════════════════════════════════════════
export const CHAO_META = Object.freeze({
code: 'xin',
name: '新',
span: '9–23',
qi: 9,
zhi: 23,
zhengshi: '《漢書》',
// ★★ 两个 null 都是【事实】,不是没查:
biao: null, // 《漢書·百官公卿表》止于漢,不录新朝。新朝无年表。
benji: null, // ★ 新朝无本紀。莽事在卷99【王莽傳】。见顶部 CHAO.benjiNote。
biaoNote: '新朝【无年表】。本表群臣 54 条全部从《王莽傳》叙事正文抠任命句。',
benjiNote: '新朝【无本紀】。本表大事全部抠自《王莽傳》卷99中/下 —— 傳,非紀。',
witnessNote: '★ 本朝实为【单证】(A/B 同源)。见 XIN_WITNESS_DOWNGRADE。',
});
// ★ 帝:从既有 EMPERORS 映射,【不动原结构】。原考据是资产,全部保留在 EMPERORS 里。
export const CHAO_DI = Object.freeze(
EMPERORS.map((e) =>
Object.freeze({
miao: e.miao,
shi: e.shi,
xing: e.xing,
li: e.li,
beng: e.beng,
nianhao: Object.freeze(e.nianhao.map((n) => Object.freeze({ hao: n.hao, qi: n.qi, zhi: n.zhi }))),
juan: e.juan,
cite: e.cite,
source: 'benji', // ★ 合表用的槽
tiLi: 'zhuan', // ★ 实情:是傳不是紀
// ⚠ 别拿这个 CHAO_DI 当全部 —— 考据在 EMPERORS / LI_CAVEAT / NIANHAO_NOTE / BANGU_VERDICT 里。
full: e,
}),
),
);
export const CHAO_COVERAGE = Object.freeze({
di: Object.freeze({
from: 9,
to: 23,
count: 1,
note:
'★ 1 位,且是【原文数出来的 1】(见顶部)。无廟號無諡號。' +
'⚠ li:9 与「称帝年 8」是两件事,见 LI_CAVEAT。',
}),
chen: Object.freeze({
from: 9,
to: 23,
// ★ 计算出来的,不是手写的。手写过一次,写成 53,实为 54 —— 是 import 时的自检抓出来的。
// ⇒ 凡是能算的数,一律算,不许手写。手写的数会在后人改动数组时【静默变成假话】。
count: CHAO_CHEN.length,
note:
'★★ 【宰辅那一层=十一公,全】。「十一公」不是本表划的,是原文划的:' +
'「…是為四輔…是為三公…是為四將。凡十一公。」(卷99中)。' +
'开国 11 人全录;此后原文记载的每一次拜/徙/免/左遷/乞骸骨/歸故官/死/自殺/戰死/殺/誅/斬 全录,无遗漏、无截断。' +
'\n⚠⚠ 【但下面这些必须说清楚,不许当成「全」】:' +
'\n① 本朝【无年表】。54 条全部从叙事正文抠 —— 原文【提到】的才有,原文【没提】的就没有。' +
'这与有《宰輔表》的朝(唐/宋/明)不是一个可靠度:那些是「名单本来就全」,这里是「叙事提到多少算多少」。' +
'\n② ⇒ 因此存在【已知的空缺】,且这些空缺【无法从本传补齐】:' +
'\n · 前將軍王盛(9年拜):此后【再无一字】。他何时去职、是否活到 23年 —— 未核。' +
'\n · 立國將軍趙閎(15年拜)、太傅唐尊(20年拜):同样再无下文。' +
'\n · 更始將軍→寧始將軍的改名【本身】失载(见 CHEN_CRUXES.gengshi-ningshi-rename)。' +
'\n · 國師一席在 9年劉歆拜、23年劉歆死之间无变动记载 —— 是真没变,还是没记,未核。' +
'\n③ 九卿一层【本表未做】:新朝官名全部改过(納言/作士/秩宗/典樂/共工/予虞…及六監),' +
'散见于叙事,未成系统。★ 这是【明说的不做】,不是静默截断。要做须另起一轮。' +
'\n④ ★ witnesses 一律 1,非 2。见 XIN_WITNESS_DOWNGRADE。',
method:
'定年法:先在卷99中/下 定出 15 个纪年锚点(始建國元年正月朔 / 二年二月 / 三年,莽曰 / 四年二月 / 五年二月 / ' +
'天鳳元年正月 / 二年二月 / 三年二月 // 四年五月 / 五年正月 / 六年春 / 地皇元年正月乙未 / 二年正月 / 三年正月 / 四年正月),' +
'按字符偏移切段,每条任命句归入其前最近的锚点。' +
'★ 已剔伪锚点:「莽為太后服喪【三年】」—— 那是服丧三年,不是始建國三年。' +
'若不剔,13–16 年全部错位。(见 REJECTED_ANCHORS)',
ceng: '四輔(太師/太傅/國師/國將)+ 三公(大司馬/大司徒/大司空)+ 四將(更始→寧始將軍/衛將軍/立國將軍/前將軍)',
}),
shi: Object.freeze({
from: 9,
to: 23,
count: CHAO_SHI.length, // ★ 算出来的,同上
layers: Object.freeze({
shi: CHAO_SHI.filter((s) => s.layer === 'shi').length,
zhi: CHAO_SHI.filter((s) => s.layer === 'zhi').length,
dao: CHAO_SHI.filter((s) => s.layer === 'dao').length, // ★ 恒为 0,理由见下 note
}),
note:
'★ 全部抠自《王莽傳》卷99中/下(本朝无本紀)。' +
'\n★★ 【道 = 0】,且这是【结论不是缺漏】:莽建的每一样制度,或被他自己废(王田,9立12废),' +
'或随他死于 23 年。十五年,零样存活。没有任何一条能通过「它到 1500 年还在起作用吗」。' +
'⇒ 这正是班固「餘分閏位」的实证形态:闰=不进位的零头。见 BANGU_VERDICT / BANGU_SIWEI。' +
'\n⚠ 9 条「制」全部【未通过 50 年测试】(最长的六筦活了 13 年)。仍标「制」的理由见 CHAO_SHI 上方注释:' +
'layer 分【种类】不分【成败】。每条 layerNote 都写明了它的 50 年测试结果,没有一条假装通过。' +
'\n⚠ 未收:卷99上(8年及以前,属漢)。莽在漢的履历不在 9–23 内。' +
'\n⚠ 取舍:本表取【改制、废立、公一级的生死、决定性战役、饥荒民变的关节】。' +
'大量灾异(日食/地震/星孛)、祥瑞、诏书辞令未逐条收 —— ★ 这是【明说的取舍】,不是静默截断。' +
'其中两次日食的【后果】收在群臣表里(14年逯並、16年陳茂皆因日食去大司馬)。' +
'\n⚠ 17、18 年无 shi 条(该二年的关节落在群臣表:17年馮常免、18年王興自殺)。这是取舍不是漏抠。',
impactNote:
'★★ 9 条「制」已全部加 impact(影响链,kind:tuiyan);0 条「道」故无。' +
'★ reach 分布 {dangchao:8, qiannian:1}:8 条下游【就在本朝内】——不是没做链,是真没有后世下游,' +
'这是「餘分閏位」的实证形态(莽之制无一活过创立者)。1 条 qiannian=9年廢五銖,且是【反讽链】:' +
'莽所废的五銖(东汉复行、至唐武德四年方废,约七百年)远寿于莽所立的莽錢(十四年)。' +
'★ 全部 tuiyan——新朝文本【不能引自己的未来】,故无一条 yuanwen 影响;后世 grounding 记在 impact.houJu(单证wikisource,ctext本轮403)。' +
'⚠ 已按红线【拒连】的诱人因果(王田→北魏均田、六筦→王安石五均市易、十一公倒果为因)记在 CHAO_SHI 上方注释,防后人硬补。',
zaichangNote:
'★★ 每条的 zaichang 是【推演】(kind:"tuiyan"),不是原文,故【无卷次】。' +
'判据:那一年【什么位阶的人】会被这件事卷进去,以及【卷法不同】。' +
'⇒ 同一件大事,落在十一公、郡守、县宰、斗食小吏身上是四道不同的题。这就是群臣图谱的用处。',
}),
});
// ★ 已排除的伪锚点 —— 记下来防后人重捡。
// (顶部 REJECTED 记的是伪纪年【文本】;此处记的是我这一轮在定年/计数时踩到的伪命中。)
export const REJECTED_ANCHORS = Object.freeze([
Object.freeze({
text: '莽為太后服喪三年。',
juan: J_ZHONG,
why:
'★★ 不是纪年锚点,是【服丧三年】。它出现在「五年二月,文母皇太后崩」之后不远处,' +
'正落在始建國五年(13)与天鳳元年(14)之间。' +
'⚠ 若把它当「始建國三年」锚点,13–16 年的群臣与大事【全部错位】。' +
'★ 这就是「逐字符复核」的用处:检索「三年」会命中它,必须看它前后。',
}),
Object.freeze({
text: '長平館西岸崩 / 大眾崩壞',
juan: J_ZHONG + ' / ' + J_XIA,
why:
'★ 检索「崩」时的伪命中:一个是【河岸崩】,一个是昆陽军【崩壞】,都不是死。' +
'⚠ 做 BANGU_SIWEI 那条时若不逐字看,会把卷中的「崩」计为 3,' +
'从而毁掉「班固只给漢人崩」这个观察。★ 卷99中的「崩」作【死】字用只有一处:文母皇太后崩。',
}),
Object.freeze({
text: '以尤為大司馬,茂為丞相。',
juan: J_XIA,
why:
'★★★ 检索「[為爲]大司馬」时最毒的伪命中 —— 拜官的是【劉聖】不是王莽,' +
'嚴尤那时已降汉。收进来 ⇒ 嚴尤凭空多出一任新朝大司馬。' +
'见 CHEN_CRUXES.yanyou-not-xin。★「命中 ≠ 属于本朝」。',
}),
]);
// ══════════════════════════════════════════════════════════════════════════
// ═══════════════════════ 四、查询函数 ═══════════════════════
// ★ 「gongqing.js 在这个仓库里躺了一整天,26,000 行的 chao/ 目前零个 import」
// ⇒ 这一段是为了不让本文件变成第五张死表。纯函数,无 IO、无依赖、无副作用。
//
// ★★ 判据是老板那句话:
// 「景帝三年,你是中大夫。你的御史大夫叫晁错。那年七国反。那年他被腰斩于东市。而你在场。」
// ⇒ 给定 (年份, 位阶) ⇒ 那年你的上司是谁、同僚是谁、谁在那年出了事、你怎么被卷进去。
// weiAt() 就是这一整句话的实现。
// ══════════════════════════════════════════════════════════════════════════
// ★ 入职类 / 去职类。⚠ '勿領尚書事' 两边都不在 —— 它不是去职(平晏仍为太傅至 20年死)。
const DONG_IN = Object.freeze(['拜', '徙']);
const DONG_OUT = Object.freeze(['免', '左遷', '乞骸骨', '歸故官', '死', '自殺', '戰死', '殺', '誅', '斬']);
// ★★ 【终局动词】:人没了。之后他【任何官】都不可能在任。
// ⇒ 与「免/左遷/乞骸骨/歸故官」分开 —— 那四个只离开【这一个官】,人还在,还能再拜别的官
// (苗訢就是活样本:15年左遷,23年拜國師)。
// ⚠ 这个区分不是洁癖,它修的是一个真 bug:
// 王匡 11年拜【太師將軍】,23年以【太師】被斬 —— 两个官名(见 CHEN_CRUXES.taishi-jiangjun,本表不许统一)。
// 若只按官名消账,「太師將軍」那一格永远没人来消 ⇒ zaiRenAt(23) 会把【已经被斩的王匡】列为在任,
// 而同一次查询的 biandong 里明写着他那年被斬。★ 一个人同时在任和被斩,那就不是史料是笑话。
// ⇒ 故:终局动词按【人】消账,不按【官】消账。
const DONG_TERMINAL = Object.freeze(['死', '自殺', '戰死', '殺', '誅', '斬']);
/** 那一年在位的皇帝 + 年号。年份不在 9–23 内返回 null。 */
export function diAt(year) {
const d = CHAO_DI.find((x) => year >= x.li && year <= x.beng);
if (!d) return null;
const nh = d.nianhao.find((n) => year >= n.qi && year <= n.zhi) || null;
return Object.freeze({
xing: d.xing,
miao: d.miao,
shi: d.shi,
nianhao: nh ? nh.hao : null,
// ★ 年号第几年(原文行用的纪年),不是公元
nianhaoNian: nh ? year - nh.qi + 1 : null,
juan: d.juan,
// ⚠ 提醒调用方:这一朝的「帝」是有争议的 —— 班固把他放在【傳】里。
tiLi: 'zhuan',
caveat: year === 9 ? '★ li=9 是新朝元年;「即真天子位」在 8 年。见 LI_CAVEAT。' : null,
});
}
/** 那一年【发生的】群臣变动(拜/免/死/誅…)。原文,非推演。 */
export function chenAt(year) {
return CHAO_CHEN.filter((c) => c.year === year);
}
/**
* 那一年【在任】的十一公 —— 即「那年你的上司是谁、同僚是谁」。
* ★ 算法:对每个官名,取该年及以前最后一次【拜/徙】;若其后有同一人的去职记录则视为空缺。
* ⚠⚠ 这是【推演】,不是原文:原文没有任何一年的完整名单(本朝无年表)。
* ⇒ 返回值每项带 kind:"tuiyan" 与 confidence。别拿它当原文引。
* ⇒ 已知的「拜了就再无下文」者(王盛/趙閎/唐尊)会一直显示在任 —— 见 CHAO_COVERAGE.chen 的已知空缺。
*/
export function zaiRenAt(year) {
if (year < CHAO_META.qi || year > CHAO_META.zhi) return Object.freeze([]);
// ★ 先算【人】的终局:谁在哪一年没的。终局按人消账,跨官名生效。
const mo = new Map(); // ren → 终局那一年
for (const c of CHAO_CHEN) {
if (DONG_TERMINAL.indexOf(c.dong) >= 0 && !mo.has(c.ren)) mo.set(c.ren, c.year);
}
const guans = [];
for (const c of CHAO_CHEN) if (guans.indexOf(c.guan) < 0) guans.push(c.guan);
const out = [];
for (const guan of guans) {
const upto = CHAO_CHEN.filter((c) => c.guan === guan && c.year <= year);
// ★★ 返回【那一年里在过这个位子的所有人】,不是「年底那一个」。
// ⇒ 交接之年(前任死/免 + 后任拜,同一年)会返回【两个人】。这不是 bug,这是实情:
// 12年你的大司馬先是甄邯(死在任上),然后是孔永。两个都是你那年的上司。
// ⚠ 曾有 bug:只留年底那一个 ⇒ 甄邯死@12 整个从 12年消失,
// 「那年谁在这个位置上出了事」这个核心查询【恰好查不到出事的那个人】。
let cur = null;
const holders = [];
for (const c of upto) {
if (DONG_IN.indexOf(c.dong) >= 0) {
cur = c;
if (c.year === year) holders.push(c); // 本年新拜者
} else if (DONG_OUT.indexOf(c.dong) >= 0 && cur && cur.ren === c.ren) {
// ★ 本年去职者:本年【是在任的】—— 他是那一年最该被列出来的人。
// 老板那句话就是这个语义:「那年他被腰斩于东市。而你在场。」
// 晁错被腰斩的那一年,恰恰是你最需要看见「你的御史大夫叫晁错」的那一年。
if (c.year === year && holders.indexOf(cur) < 0) holders.push(cur);
cur = null;
}
}
// 年初就在任、且本年没动过的人
if (cur && holders.indexOf(cur) < 0) holders.push(cur);
for (const h of holders) {
// ★★ 人已终局(死/斬/誅/自殺/戰死/殺)⇒ 从【那一年之后】起,他任何官都不在任。
// 见 DONG_TERMINAL 上方注释(王匡「太師將軍」/「太師」两名的坑)。
const moYear = mo.get(h.ren);
if (moYear !== undefined && moYear < year) continue;
const left = CHAO_CHEN.find(
(c) =>
c.ren === h.ren &&
c.year === year &&
DONG_OUT.indexOf(c.dong) >= 0 &&
(c.guan === guan || DONG_TERMINAL.indexOf(c.dong) >= 0), // 终局跨官名
);
out.push(
Object.freeze({
guan,
ren: h.ren,
jue: h.jue || null,
since: h.year,
kind: 'tuiyan', // ★ 推演,非原文
confidence:
'★ 由拜/免记录推出,非原文名单(本朝无年表)。原文未记去职者一律视为在任 —— ' +
'见 CHAO_COVERAGE.chen 的已知空缺(王盛/趙閎/唐尊)。',
leftThisYear: left ? left.dong : null,
renUncertain: h.renUncertain || false,
}),
);
}
}
return Object.freeze(out.sort((a, b) => a.since - b.since || (a.guan < b.guan ? -1 : 1)));
}
/** 那一年的大事。原文,非推演(但每条的 zaichang 是推演)。 */
export function shiAt(year) {
return CHAO_SHI.filter((s) => s.year === year);
}
/**
* ★★★ 老板那句话的实现:给定 (年份, 位阶) ⇒ 那一年,你在场的样子。
* @param {number} year 公元 9–23
* @param {string} [wei] 位阶关键词(如「斗食」「郡守」「县宰」「十一公」)。省略则返回全部位阶。
*/
export function weiAt(year, wei) {
const di = diAt(year);
if (!di) return null;
return Object.freeze({
year,
di,
// 那年你的上司/同僚(十一公在任)—— 推演
zaiRen: zaiRenAt(year),
// 那年谁出了事 —— ★ dong 就是「出了什么事」—— 原文
biandong: chenAt(year),
// 那年的大事,以及【你这个位阶】怎么被卷进去
shi: Object.freeze(
shiAt(year).map((s) =>
Object.freeze({
shi: s.shi,
juan: s.juan,
layer: s.layer,
layerNote: s.layerNote,
zaichang: wei ? s.zaichang.filter((z) => z.wei.indexOf(wei) >= 0) : s.zaichang,
}),
),
),
wei: wei || null,
note:
'★ zaiRen 与 shi[].zaichang 是【推演】(tuiyan);di / biandong / shi[].shi 是【原文】(yuanwen)。' +
'别把两者混着引。',
});
}
// ══════════════════════════════════════════════════════════════════════════
// ★★★ 【十一公自检:本表最硬的一条自证】
//
// 原文自己写了一个数:「…是為四輔…是為三公…是為四將。【凡十一公】。」
// ⇒ 那这个数就是一把尺子:本表若抠漏了一次任命,某个位子会【空掉】;
// 若凭空多抠一条,某个位子会【叠上】。两样都会让占位数不等于 11。
//
// 结果:9–23 十五年,【每一年占位数都正好 11】。
//
// ★ 这不是我摆出来的 —— 54 条任命是从【没有年表的散文】里一句一句抠的,
// 占位数是这 54 条【算出来】的。它自己撞上了班固写的那个 11。
// ⇒ 这是本朝【单证】条件下能拿到的最强的一个独立校验:
// 它不依赖第二个见证,它依赖【原文自己报的数】。
//
// ⚠ 它能证明什么,不能证明什么(别吹大):
// 能:宰辅这一层的【任命链条无缺环】—— 没有静默漏抠,没有凭空多写。
// 不能:不能证明人名对(见 CHEN_CRUXES.houfu-name),不能证明官名归属对
// (更始/寧始、太師/太師將軍 两组是【我判定】为同一位子的,见下 slot()),
// 更不能替代目验点校本。
// ══════════════════════════════════════════════════════════════════════════
export const SHIYIGONG_CHECK = Object.freeze({
yiju: '「…是為四輔,位上公。…是為三公。…是為四將。凡十一公。」(卷99中,始建國元年)',
// ★ 两组改名,本表【不在数据里合并】(见 CHEN_CRUXES),只在【本校验里】视为同一位子:
// 更始將軍 ≡ 寧始將軍(19年诏「復以寧始將軍為更始將軍」=同一位子改回旧名)
// 太師 ≡ 太師將軍(皆王匡,褒新侯,同一人同一位)
slotOf: (guan) => (guan === '寧始將軍' ? '更始將軍' : guan === '太師將軍' ? '太師' : guan),
result: '9–23 十五年,每年占位数皆为 11。无空位,无叠位。',
proves: '宰辅(十一公)一层的任命链条【无缺环】—— 无静默漏抠,无凭空多写。',
doesNotProve:
'① 不证明人名对(侯輔悬案未判)。② 两组改名是【本表判定】为同一位子,非原文明言。' +
'③ 不替代目验点校本 —— 本朝仍是单证。',
});
// ── 自检:数据形状。★ 纯断言,不跑 IO。让错误在 import 时就暴露,而不是在产品里。 ──
export const XIN_SELFCHECK = Object.freeze({
chenCount: CHAO_CHEN.length,
shiCount: CHAO_SHI.length,
daoCount: CHAO_SHI.filter((s) => s.layer === 'dao').length,
zhiCount: CHAO_SHI.filter((s) => s.layer === 'zhi').length,
shiLayerCount: CHAO_SHI.filter((s) => s.layer === 'shi').length,
dongKinds: CHAO_CHEN.map((c) => c.dong).filter((d, i, a) => a.indexOf(d) === i),
// ★ 每条大事都必须有 layerNote(不许空标)与 zaichang
everyShiHasLayerNote: CHAO_SHI.every((s) => typeof s.layerNote === 'string' && s.layerNote.length > 10),
everyShiHasZaichang: CHAO_SHI.every((s) => s.zaichang.length > 0),
// ★ zaichang 一律 tuiyan,且【不许有卷次】
zaichangNeverHasJuan: CHAO_SHI.every((s) => s.zaichang.every((z) => z.kind === 'tuiyan' && !('juan' in z))),
// ★ 年份必须全部落在 9–23
yearsInSpan:
CHAO_CHEN.every((c) => c.year >= 9 && c.year <= 23) && CHAO_SHI.every((s) => s.year >= 9 && s.year <= 23),
// ★ 单证
everyWitnessIsOne: CHAO_CHEN.every((c) => c.witnesses === 1) && CHAO_SHI.every((s) => s.witnesses === 1),
// ★★ impact(影响链)自检:只加在 制/道 上;事(shi)不加;本朝全部 tuiyan(新朝不能引自己的未来)
impactCount: CHAO_SHI.filter((s) => s.impact).length,
everyZhiDaoHasImpact: CHAO_SHI.filter((s) => s.layer === 'zhi' || s.layer === 'dao').every((s) => !!s.impact),
noShiHasImpact: CHAO_SHI.filter((s) => s.layer === 'shi').every((s) => !s.impact),
everyImpactIsTuiyan: CHAO_SHI.filter((s) => s.impact).every((s) => s.impact.kind === 'tuiyan'),
everyImpactReachValid: CHAO_SHI.filter((s) => s.impact).every(
(s) => ['dangchao', 'houshi', 'qiannian'].indexOf(s.impact.reach) >= 0,
),
everyImpactHasReason: CHAO_SHI.filter((s) => s.impact).every(
(s) => typeof s.impact.reason === 'string' && s.impact.reason.length > 10,
),
// ★ reach 分布:本朝应为 {dangchao:8, qiannian:1}——8 条真无后世下游(餘分閏位),1 条反讽千年链(五銖)
impactReach: (() => {
const m = {};
for (const s of CHAO_SHI) if (s.impact) m[s.impact.reach] = (m[s.impact.reach] || 0) + 1;
return m;
})(),
// ★★★ 十一公自检:9–23 每一年占位数都必须是 11。见 SHIYIGONG_CHECK。
// ⚠ 这条挂了就说明【有任命被抠漏了】或【多写了一条】—— 是本文件最该先看的报警。
shiyigongEveryYear: (() => {
const years = [];
for (let y = CHAO_META.qi; y <= CHAO_META.zhi; y++) {
const slots = [];
for (const z of zaiRenAt(y)) {
const s = SHIYIGONG_CHECK.slotOf(z.guan);
if (slots.indexOf(s) < 0) slots.push(s);
}
if (slots.length !== 11) years.push(y + ':' + slots.length);
}
return years.length === 0 ? true : years;
})(),
});